2013-08-20 103 views
1

我有一項服務需要發送有關失敗的自動電子郵件。我覺得我有它設置了,但我一直收到以下錯誤:發送自動郵件

Service not available, closing transmission channel. The server response 
was: 4.3.2 Service not available 

我不能完全弄清楚我哪裏錯了,但這裏是我的代碼:

public static void AutoEmail() 
{ 
    try 
    { 
     SmtpClient newClient = new SmtpClient(); 
     newClient.Host = "host name"; 
     newClient.Port = Port number; 
     newClient.Credentials = new System.Net.NetworkCredential(
     "username", "password"); 

     MailMessage mail = new MailMessage(); 
     mail.To.Add(new MailAddress("[email protected]")); 
     mail.Body = "This is a test message."; 
     mail.Subject = "Test - " + DateTime.Now; 
     mail.From = new MailAddress("[email protected]"); 

     newClient.Send(mail); 
    } 
    catch (Exception ex) 
    { 
     Log.WriteException("Error in Email", ex); 
    } 
} 

任何幫助將非常感謝。謝謝!

+0

此時你得到的例外? – Rohit

+0

一旦它碰到說'newClient.Send(mail);'的行,就會觸發catch。 – scapegoat17

+0

可能的重複[服務器響應是:4.3.2服務不可用,關閉傳輸通道](http://stackoverflow.com/questions/12732859/the-server-response-was-4-3-2-service- not-available-closing-transmission-chann) – DaveShaw

回答

2

您確定您使用的SMTP服務器允許應用程序發送電子郵件嗎?我遇到過類似的問題,根本原因是由於權限不足,Exchange服務器拒絕發送請求。我的代碼中的步驟與您的步驟相同。檢查權限。

+0

有沒有可以檢查的方法? – scapegoat17

+0

如果您使用Exchange服務器,則服務器管理員將爲您提供幫助。 – Vishy

+0

您在NetworkCredential中指定的「用戶名」應具有發送電子郵件的權限。同時檢查端口號是否正確。您可以註釋掉代碼中的端口設置,將其設置爲默認的SMTP端口。 – Vishy

1

你試過

newClient .UseDefaultCredentials = true; 

幫助?

SMTP服務器名稱僅適用於包含該SMTP服務器的網絡中的計算機。

+0

我明白你的意思了,但不幸的是它似乎沒有幫助。在同一點仍然得到相同的例外。 – scapegoat17

0

您需要確保程序中的SMTP服務器的主機名和端口號是否正確。程序中的所有其他代碼看起來都很好。 我以前遇到過同樣的錯誤。最後,我改變了正確的主機名和端口號,一切正常。 例如,Outlook.com或Hotmail電子郵件帳戶

host="smtp-mail.outlook.com" port="25" enableSsl="true" 

https://www.outlook-apps.com/outlook-com-pop-settings/