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