我們有許多通過我們的Office 365 Exchange帳戶發送電子郵件的C#(.net 4)應用程序。這在90%的時間內完全正常工作。但偶爾,我們得到以下錯誤:.NET應用程序中的Office 365 Exchange SMTP間歇性身份驗證失敗
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during 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("[email protected]", "mypassword");
mailClient.Send(mail);
}
我已經看到了問題,提出有關此錯誤消息在這之前,但我還沒有找到任何解釋爲爲什麼它可能只是間歇性發生。該錯誤消息令人困惑,因爲我不想匿名發送,而且我已經在使用EnableSsl。 (注意:如果我刪除憑證行或EnableSSL行,那麼我每次都會收到此錯誤)
編輯:作爲測試,我做了一個簡單的應用程序,每分鐘發送一次電子郵件。在一次爆炸之前,我通常會收到12到25封成功的電子郵件。然後在再次爆炸之前,它會恢復正常12-25分。
編輯:由於問題是如此零星,並涉及從365 SMTP服務器返回的錯誤消息,我真的不認爲它與代碼本身的問題。鑑於此,我不確定我是否正確地標記了問題,或者SO是否是最好的社區。如果你們中的任何一位Stack Exchange的老手認爲這將會更好地置於不同的社區,那麼我就是耳熟能詳。我自己有點新。
任何想法感謝!
我會發佈一個方法,您可以使用和或更改,我只是測試它 – MethodMan
我也面臨這種間歇性的問題。我會說我們的郵件服務99%的時間工作,然後失敗,同樣的錯誤信息「SMTP服務器需要一個安全的連接或客戶端未驗證。服務器響應是:5.7.57 SMTP;客戶端未通過身份驗證發送MAIL FROM期間的匿名郵件「。 您是否找到解決這個老問題的方法? –
還沒有。我有一個與微軟合作的案例。他們說其他人也在經歷間歇性問題。如果我們使用本地IIS中繼與365進行通信,則錯誤似乎消失。所以這是一個解決方法,但我不想爲每個應用程序使用中繼。我目前正致力於在我的.NET應用程序中捕獲SMTP日誌,以便爲MS提供更詳細的準確信息。 – Benjamin