[英]Temporary problems sending emails with ASP.NET
我討厭在這里發布一個堆棧跟蹤,但我沒有想法......我的應用程序在網站上發送各種任務的電子郵件,90%的時間都沒有問題。 但是,ASP.NET經常會拋出一個奇怪的異常,這似乎與郵件服務器連接有關(我使用谷歌業務服務器來處理電子郵件)。 這個錯誤對我來說太通用了,所以下面的堆棧跟蹤。 我的應用程序捕獲異常並回寫一個通用的“在5分鍾響應中再試一次”。
我被這個錯誤困擾了,因為:
有任何想法嗎? 我能想到的唯一突出問題是:
代碼:
public static void SendMail(String from, String to, String subject, String body, bool IsHtml)
{
MailMessage m = new MailMessage(from, to, subject, body);
m.IsBodyHtml = IsHtml;
SmtpClient smtpClient = new SmtpClient();
smtpClient.EnableSsl = true;
smtpClient.Send(m);
}
例外:
System.Net.Mail.SmtpException: Error in processing. The server response was: 4.3.0 Mail server temporarily rejected message. m6sm2190005vcx.24
at System.Net.Mail.DataStopCommand.CheckResponse(SmtpStatusCode statusCode, String serverResponse)
at System.Net.Mail.DataStopCommand.Send(SmtpConnection conn)
at System.Net.Mail.SmtpConnection.OnClose(Object sender, EventArgs args)
at System.Net.ClosableStream.Close()
at System.Net.Mail.MailWriter.Close()
at System.Net.Mail.SmtpClient.Send(MailMessage message)
我過去曾在批量電子郵件系統上工作過。 您獲得的異常消息完全是描述性的:SMTP服務器暫時不接受郵件。 這可能是由於許多條件:
以后重試電子郵件始終有效的事實表明這是正常的預期行為。 沒有什么可以做的不同以避免這種情況,它是ISP用於在需要時限制流量的常用方法。
除了Dave Swersky已經說過的內容之外:你可以存儲你想要發送到某個地方的電子郵件(比如文件系統或數據庫),並讓電子郵件生成一個服務。 您的服務會關注要發送的新電子郵件。 如果發送時發生錯誤,您可以將電子郵件放回隊列中,稍后再試。
也許您甚至可以使用使用GoogleMail作為中繼服務器的本地STMPServer。 在這種情況下,您可以使用內置的拾取目錄功能而不是自己編寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.