2011-05-09 120 views
7

我使用Gmail STMP服務器發送電子郵件。它工作得很好。但是從幾天起,它有時會停止工作。現在,它只能工作5 out of 10次。有什麼辦法可以關閉郵件smtp會話嗎?

例外:Failure Sending Email

內部異常:Unable to connect to remote server.

交談託管的技術支持後,他們說有他們的服務器上的郵件會話限制。這是一個Shared Hosting,所以當它超過所有新連接阻塞時。他們說他們正在努力解決它。但也說,請檢查你是closing the mail session properly or not

我看着它,但沒有Close()Dispose()。我也讀過SMTP傳輸沒有確認嗎?

請讓我知道是否有反正關閉郵件會話?或者解決此問題的任何解決方法。

更新

我使用System.Net.Mail

味精MAILMESSAGE新= MAILMESSAGE();

SmtpClient sc = new SmtpClient(「smtp.gmail.com」,587);

NetworkCredential info = new NetworkCredential(「email」,「password」);

然後還有另一種方法叫sc.Send()

+1

請發表您的當前代碼。清楚說明您是否使用System.Net.Mail,System.Web.Mail或其他解決方案 – 2011-05-09 13:04:20

回答

12

System.Net.Mail.SmtpClient實現IDisposable,所以我建議你使用它而不是你正在使用的任何代碼。使用using塊來確保它被正確處置。

特別要注意的是,System.Web.Mail的使用已被棄用,以支持System.Net.Mail

using (SmtpClient client = new SmtpClient("mail.google.com")) 
{ 

} 

編輯 現在,您已經注意到,您正在使用System.Net.Mail。在這種情況下,您會發現SMTPClient 確實有一個Dispose方法(因爲它實現了IDisposable),它將優雅地關閉SMTP連接。但是,使用using塊而不是直接調用Dispose被認爲是更好的做法。最後,請從鏈接的文檔中注意以下內容:

SmtpClient類沒有Finalize 方法。因此,應用程序必須調用 Dispose才能明確釋放 資源。

通過 到在主機 屬性指定的 SMTP服務器的所有已建立的連接Dispose方法迭代,併發送一個退出消息 隨後正常結束TCP 連接。 Dispose方法還通過底層套接字釋放使用的非託管資源 。

+0

謝謝。我將在所有應用程序中應用此功能,並看看它是否有效。 – 2011-05-09 13:28:33

+2

直到4.0版本才添加IDisposeable – landoncz 2013-11-22 17:51:32

相關問題