SmtpException:发送邮件失败。循环发送附件

SmtpException: Failure sending mail. Loop sending with Attachments

我有一个控制台应用程序,可以将电子邮件发送到多个(目前有 12 个)不同的电子邮件组。该过程循环进行,每次创建一个不同的 excel 工作簿,保存该工作簿,然后发送一封附有该工作簿的电子邮件。

这个过程 运行 好几个月了。现在,该程序将完成 2 封电子邮件,然后它将为 Failure sending mail. 抛出异常我发现内部异常是 Unable to read data from the transport connection: net_io_connectionclosed

工作簿是通过 2 SQL 个存储过程创建的。即使电子邮件失败,工作簿也会创建并可以打开,所以我认为这与所涉及的 SQL 没有任何关系。

我已经看到其他几个类似问题的 SO 问题,但由于我的过程适用于 2,失败于 1,适用于 2,失败于 1....我相信我的问题不同于简单的端口或凭据问题。

这是我之前循环声明 SmtpClient

的代码
SmtpClient client = new SmtpClient("intmail.MyDomain.net", 25);
NetworkCredential cred = new NetworkCredential("myEmailAddress@email.com", "");
client.Credentials = cred; // Send our account login details to the client.
client.EnableSsl = false;   // Read below.

这是我在循环中创建电子邮件、附加工作簿和发送的代码。

MailMessage msg = new MailMessage();
Attachment xls01 = new Attachment(filePath);

string emailTo = ClientEmail;

string[] emailTos = emailTo.Split(new char[] { ';' });

foreach (string To in emailTos)
{
    msg.To.Add(To);
    Console.WriteLine(To);
}

msg.From = new MailAddress("myEmailAddress@email.com");
//msg.CC.Add(new MailAddress("myEmailAddress@email.com"));
msg.Subject = ClientName + reportMonth + " " + reportYear;
msg.Body = "Attached is report for period ending on the last day of " + reportMonth + " " + reportYear + ".\r\nAlso attached are the 13 month  trends.";
msg.Attachments.Add(xls01);



try
{
    client.Send(msg);
}
catch (Exception ex)
{
    Console.WriteLine(ex);   //Should print stacktrace + details of inner exception

    if (ex.InnerException != null)
    {
        Console.WriteLine("InnerException is: {0}", ex.InnerException);
    }
}

当您一个接一个地发送邮件时,很可能您遇到了 smtp 服务器反垃圾邮件过滤器。尝试及时 space 将它们分开,每次发送尝试 3 次。显然如果任何一个发送失败你不应该停止,你应该通过所有 12.