【问题标题】:Intermittent failure with Office SMTP serverOffice SMTP 服务器间歇性故障
【发布时间】:2016-01-20 14:44:23
【问题描述】:

我每天使用 Office 365 smtp 服务器发送大约 2-3000 封电子邮件。 99% 的电子邮件发送正确,但大约 1% 的时间我收到以下错误:

SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.57 SMTP;在 MAIL FROM 期间,客户端未通过身份验证发送匿名邮件。

这是我的代码:

private void SendEmail(string strTo, string strFrom, string strMessage, string strSubject, bool htmlFormat = true)
{
    System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
    System.Net.Mail.MailAddress mto = new System.Net.Mail.MailAddress(strTo);
    System.Net.Mail.MailAddress mfrom = new System.Net.Mail.MailAddress(strFrom);
    mail.Subject = strSubject;
    mail.From = mfrom;
    mail.To.Add(mto);
    mail.Body = strMessage;
    mail.IsBodyHtml = htmlFormat;
    System.Net.Mail.SmtpClient mailClient = new System.Net.Mail.SmtpClient("smtp.office365.com", 587);
    mailClient.Timeout = 1000000;
    mailClient.EnableSsl = true;
    mailClient.UseDefaultCredentials = false;
    mailClient.Credentials = new System.Net.NetworkCredential("my@emailaddress.com", "mypassword");
    mailClient.Send(mail);
}

有人知道为什么会如此间歇性地发生这种情况吗?!

【问题讨论】:

  • 您是否通过代码中的循环来执行此操作?还是您使用批处理来发送大量电子邮件?
  • 邮件在队列中,我每分钟最多发送 10 封邮件

标签: c# smtp office365


【解决方案1】:

这不是代码问题,您需要知道您每天从客户端应用发送多少收据,而不是电子邮件数量。

一封电子邮件可能包含多个收件人。因此,如果您发送 2 封电子邮件并且每封包含 4 张收据,那么您将发送 8 封电子邮件。然后将此数字与最大值进行比较。 o365 订阅每天的电子邮件数量。

请查看每个订阅的收件人速率限制、收件人限制和消息速率限制。

在此处查看这些限制:

https://technet.microsoft.com/en-us/library/exchange-online-limits.aspx

希望这会有所帮助。

【讨论】:

  • 电子邮件在队列中,每分钟限制为 10 封电子邮件。我们的帐户每分钟可容忍 30 封邮件,因此我们很安全。我们从不向多个收件人发送电子邮件。我也认为这不是代码问题。我在考虑网络问题,但我们托管在高端云服务上。
  • 尝试在通用异常之前捕获网络和SMTP异常,详细确定抛出什么类型的异常。可能是网络问题导致应用丢失了您与邮件服务器建立连接所拥有的身份验证令牌。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2011-10-27
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
  • 2018-12-26
相关资源
最近更新 更多