我在c#中创建一个Windows窗体应用程序,它必须能够向Access数据库中的表中的所有收件人ID发送电子邮件。
我已经知道如何发送邮件甚至成功进行测试,但我不明白如何将所有de email id转换为逗号分隔字符串。
如果这段代码进入表单代码或其他地方,我也很困惑。
我已经尝试过使用foreach循环,由于某种原因,他们有错误说我不能使用它们。
我也读过一些linq但我无法理解在我的程序中甚至在哪里实现这样的代码。
以下是电子邮件发送按钮的代码:
private void button1_Click(object sender, EventArgs e)
{
try
{
MailMessage mail = new MailMessage();
SmtpClient smtpserver = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("[email protected]");
mail.To.Add("[email protected],[email protected]");
mail.Subject = "Que xopa";
mail.Body = "probando 1 2 3";
smtpserver.Port = 587;
smtpserver.Credentials = new
System.Net.NetworkCredential("[email protected]","proyectofinal69lus");
smtpserver.EnableSsl = true;
smtpserver.Send(mail);
MessageBox.Show("mail Send");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
现在我已经实现了向代码中看到的帐户发送邮件,这样就可以了,我需要的是数据库中的帐户是以分开的逗号字符串格式,所以我可以在这个按钮中使用它们。
目前还不清楚为什么你不会简单地在数据库中查询这些信息。但是,如果您已经拥有DataTable
,正如其他人所指出的那样,您将需要遍历DataTable.Rows
集合并从该行获取电子邮件地址单元格,添加逗号,然后对表中的所有行继续此操作。 StringBuilder
可能有助于构建此逗号分隔的电子邮件字符串。它可能看起来像下面的......
private string GetEmailAddress(DataTable dt) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < dt.Rows.Count; i++) {
sb.Append(dt.Rows[i]["Email"].ToString());
if (i < dt.Rows.Count - 1)
sb.Append(",");
}
sb.AppendLine();
return sb.ToString();
}
根据我的理解,你应该尝试拆分该字符串,然后添加我要发送给'To'子句的每封电子邮件。
这里举例说明一个例子: -
https://www.c-sharpcorner.com/UploadFile/0c1bb2/sending-email-to-multiple-recipeint-using-Asp-Net/