如何知道我发送的电子邮件是否成功

时间:2014-11-25 15:41:01

标签: c#

我正在尝试开发一个向多个接收者发送电子邮件的应用程序。

我正在逐行读取文本文件中的所有邮件地址。但是我想知道..例如我的列表中有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)
    {
      //
    }
}

1 个答案:

答案 0 :(得分:0)

由于您使用的是Gmail,因此您的选项非常有限。如果无法访问SMTP主机,您将获得例外情况,但如果您收到200响应,那么您在技术上已完成交付合同的结束,并且事后将发送任何后续响应(电子邮件不存在,例子)。

您可能会在MailMessage的DeliveryNotificationOptions属性下找到一些额外的选项并处理异常,但这些是有限的,并且实际上并没有提供我认为您正在寻找的内容。