2012-01-05 44 views
0

我有下面的類:一些故障時發送電子郵件

public class Email 
{ 
    public System.Net.Mail.SmtpClient SmtpClient 
    { 
     get 
     { 
      if (_client == null) 
      { 
        _client = new System.Net.Mail.SmtpClient(); 
      } 
      return _client; 
     } 
    } 
} 

,並用它

static Email email = new Email(); 

(在方法)

    email.SmtpClient.Send(message); 

這個代碼,我的幾個電話後,獲得例外:

服務不可用,關閉傳輸通道。服務器 的響應是:4.4.2服務超時。

爲什麼?

+3

拋出的異常應該有一些信息,說明它爲什麼不能發送。如果你附加一個調試器並查看細節,它應該有更多的信息。你能不能發佈一下,以便我們幫你解決問題? – JaredPar 2012-01-05 17:01:56

+0

服務不可用,關閉傳輸通道。服務器響應是:4.4.2服務超時。 – 2012-01-05 17:47:40

+0

這聽起來像你有連接問題。您是否驗證過可以從正在運行測試的機器手動連接到服務器?也請嘗試暫時禁用防火牆以查看是否修復了問題 – JaredPar 2012-01-05 17:54:33

回答

1

此錯誤可能是因爲您超出了MessageRateLimitExceeded(這限制了您可以發送多條消息的速度),或者連接已經丟失。 SMTP服務器上還有其他配置參數,可以限制每個會話可以發送多少個數據和多少數據。 SmtpClient還管理池中的連接,因此我認爲在發送幾條消息之後創建新客戶端會更好。您還必須配置客戶端以確保客戶端向服務器發送QUIT消息。

有關錯誤情況的更多信息,請閱讀MSDN Article