【发布时间】:2018-07-18 16:28:06
【问题描述】:
我正在尝试开发一个向多个收件人发送电子邮件的应用程序。
我正在逐行读取文本文件中的所有邮件地址。但我想知道..例如,我的列表中有 50 个邮件地址,而数字 45 出了点问题。
我如何告知用户这件事,是否可以发送列表的其余部分?
private void Senmail(IEnumerable<string> list)
{
var mes = new MailMessage {From = new MailAddress(_uname.Trim())};
var col = new MailAddressCollection();
foreach (string adres in list)
{
col.Add(adres);
}
for (int i = 0; i < GetList().Count(); i++)
{
mes.To.Add(col[i].Address);
}
mes.Subject = txtbody.Text;
mes.Body = txtmail.Text;
mes.Attachments.Add(new Attachment(_filename));
var client = new SmtpClient
{
Port = 587,
Host = "smtp.gmail.com",
EnableSsl = true,
Timeout = 5000,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(_uname, _pass),
};
object userState = mes;
client.SendAsync(mes,userState);
client.SendCompleted += client_SendCompleted;
MessageBox.Show("ok");
}
void client_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
if (e.Error!=null)
{
//
}
}
【问题讨论】:
-
在此上下文中定义“成功”。
-
如果邮件发送到 SMTP 没有错误,那么它被成功发送到 SMTP。在那之后,它就不在你的手中了。
-
唯一可以合理确定的方法是通过与目标域 DNS MX 记录中的指定 SMTP 服务器对话来“手动”传递消息,而不是使用第 3 方为您中继。跨度>
标签: c#