【发布时间】:2016-04-17 17:19:57
【问题描述】:
我们有许多通过我们的 Office 365 Exchange 帐户发送电子邮件的 C# (.net 4) 应用程序。这在 90% 的时间里都可以正常工作。但偶尔我们会收到以下错误:
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);
}
我之前在这里看到过有关此错误消息的问题,但我还没有找到任何解释为什么它可能只是间歇性地发生。该错误消息令人困惑,因为我没有尝试匿名发送,而且我已经在使用 EnableSsl。 (注意:如果我删除 Credentials 行或 EnableSSL 行,那么我每次都会收到此错误)
编辑:作为测试,我制作了一个简单的应用程序,每分钟向我发送一封电子邮件。我通常会收到 12 到 25 封成功的电子邮件,然后才会有一封邮件崩溃。然后它会在 12-25 秒内恢复正常,然后再次爆炸。
编辑:由于问题是如此零星,并且涉及从 365 SMTP 服务器返回的错误消息,我真的不认为这是代码本身的问题。鉴于此,我不确定我是否正确标记了这个问题,或者 SO 是否是最好的社区。如果你们中的任何一个 Stack Exchange 资深人士认为这会更好地放在不同的社区中,我全都在听。我自己在这里有点新。
感谢任何想法!
【问题讨论】:
-
我将发布一个你可以使用的方法,或者改变我刚刚测试过的方法
-
我也面临这个间歇性问题。我会说我们的邮件服务在 99% 的情况下都工作,然后失败并显示相同的错误消息“SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.57 SMTP;客户端未通过身份验证发送MAIL FROM 期间的匿名邮件。”您找到解决这个老问题的方法了吗?
-
还没有。我有一个与 Microsoft 合作的案件。他们说其他人也遇到了间歇性问题。如果我们改为使用本地 IIS 中继与 365 通信,错误似乎消失了。所以这是一种解决方法,但我不想为每个应用程序都使用中继。我目前正致力于在我的 .NET 应用程序中捕获 SMTP 日志,以便为 MS 提供有关问题所在的更多详细信息。
标签: c# .net email smtp office365