2016-01-20 134 views
0

我每天使用Office 365 smtp服務器發送約2-3000封電子郵件。 99%的電子郵件發送正確,但大約1%的時間出現以下錯誤:Office SMTP服務器間歇性故障

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("[email protected]", "mypassword"); 
    mailClient.Send(mail); 
} 

有人有一個想法,爲什麼這種情況正在發生這樣斷斷續續?

+0

你是否通過代碼中的循環來做到這一點?或者你使用批量發送這麼多電子郵件? – Mostafa

+0

郵件隊列中,我每分鐘發送最多10封電子郵件 –

回答

1

這不是代碼問題,您需要知道您每天從客戶端應用程序發送的收據數量,而不是電子郵件數量。

電子郵件可能包含多個收件人。因此,如果您發送2封電子郵件並且每封郵件都包含4張收據,則您將發送8封電子郵件。然後將這個數字與最大值進行比較。您的o365訂閱每天會收到多封電子郵件。

請查看收件人的速率限制,收件人限制和每個訂閱的消息速率限制。

退房這裏這些限制:

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

希望這有助於。

+0

電子郵件處於隊列中,每分鐘限制爲10封電子郵件。我們的帳戶每分鐘容納30封郵件,所以我們很安全。我們絕不會向多個收件人發送電子郵件。我也認爲這不是一個代碼問題。我在考慮網絡問題,但我們託管在頂級雲服務上。 –

+1

嘗試在通用異常之前捕獲網絡和SMTP異常,以確定詳細拋出什麼類型的異常。它可能是一個網絡問題,它會導致應用程序失去爲與郵件服務器建立連接而擁有的身份驗證令牌。 – Mostafa