Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sendgrid从C#Winform应用程序发送到电子邮件列表_C#_Sendgrid - Fatal编程技术网

sendgrid从C#Winform应用程序发送到电子邮件列表

sendgrid从C#Winform应用程序发送到电子邮件列表,c#,sendgrid,C#,Sendgrid,我有一个Winform应用程序,我想从中发送电子邮件,我可以使用sendgrid并键入电子邮件地址。问题是,我想发送的电子邮件将根据情况发送给不同的人,因此“收件人字段”需要是动态的 我有一个SQL数据库,用于存储人们希望得到通知的事件的电子邮件地址,我在准备发送电子邮件时会向上拉列表,但我不知道如何将这些项目放入Sendgrid想要的列表中 try { using (SqlConnection conn = new SqlConn

我有一个Winform应用程序,我想从中发送电子邮件,我可以使用sendgrid并键入电子邮件地址。问题是,我想发送的电子邮件将根据情况发送给不同的人,因此“收件人字段”需要是动态的

我有一个SQL数据库,用于存储人们希望得到通知的事件的电子邮件地址,我在准备发送电子邮件时会向上拉列表,但我不知道如何将这些项目放入Sendgrid想要的
列表中

            try
        {
            using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MfgDataCollector"].ToString()))
            {
                var apiKey = "SendGrid Key";
                var client = new SendGridClient(apiKey);
                var from = new EmailAddress("test@gmail.com", "test from App");

                //Standard Email lists
                //var tos = new List<EmailAddress>
                //{
                //new EmailAddress("test@gmail.com"),
                //new EmailAddress("test2@gmail.com")
                //};

                //Query to get emails from SQL using Dapper
                DynamicParameters param = new DynamicParameters();
                param.Add("@Zone", Variables.Zone);
                param.Add("@Gatelevel", Lbl_GateLevel.Text);
                List<AlertMessages> EmailList = conn.Query<AlertMessages>("GetEmailList", param, commandType: CommandType.StoredProcedure).ToList<AlertMessages>();

                //Lost here??? Not sure how to get EmailList to EmailAddresses 
                var tos = new List<EmailAddress> { };

                string subject = txt_Subject.Text;
                string plainTextContent = txt_Body.Text;
                var htmlContent = txt_Body.Text;
                var showAllRecipients = true; // Set to true if you want the recipients to see each others email addresses

                var msg = MailHelper.CreateSingleEmailToMultipleRecipients(from,
                                                                           tos,
                                                                           subject,
                                                                           plainTextContent,
                                                                           htmlContent,
                                                                           showAllRecipients
                                                                           );
                var response = await client.SendEmailAsync(msg);
                MessageBox.Show("SendGrid Completed");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Send Email Notification - SendGrid - Oops!", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

假设您成功地从Dapper查询中获取电子邮件列表

List<AlertMessages> EmailList = conn.Query<AlertMessages>("GetEmailList", param, commandType: CommandType.StoredProcedure).ToList<AlertMessages>();
然后您可以将
列表
展平为
列表
如下所示

var tos = EmailList.Select(item => new EmailAddress { Email = item.Email, Name = item.Name }).ToList();
其中,
item
是类型为
AlertMessages
item的选择迭代器变量。Email
item.Name
是各自迭代器变量的属性


然后将上面的
tos
列表传递给
CreateSingleEmailToMultipleRecipients
方法。

AlertMessages
类中
EmailAddress
Email
之间有什么区别?这非常有效,非常感谢!!我花了好几个小时尝试不同的事情,但什么都不管用。一个关于这里的快速问题,bam问题就解决了!哦,很高兴听到这个消息,请在答案的左边打勾,如果你觉得好的话,把它变成绿色;)
class AlertMessages
{
    ...
    public string Email { get; set; }
    public string Name { get; set; }
    ...
}
var tos = EmailList.Select(item => new EmailAddress { Email = item.Email, Name = item.Name }).ToList();