2009-09-11 172 views
0

我有代碼如下:發送郵件失敗(SmtpClient)

var smtpClient = new SmtpClient("my.mail.server"); 
smtpClient.Send(mailmessage); 

但是發送方法調用失敗,出現「遠程機器積極拒絕」異常消息。我知道沒有防火牆阻塞因爲我可以telnet到相同的地址,並通過服務器手動處理Smtp協議。我知道代碼正在工作,因爲我可以連接到不同於默認端口的端口25.沒有軟件防火牆阻止傳輸。

當wiresharking我可以看到telnet'ing時設置的包,我可以看到,當我嘗試使用代碼時,沒有任何東西離開我的機器。所以這是一個安全的假設,問題出在我的機器上,並且與網絡無關。

基本上我可以連接到所有其他地方而不是.NET代碼,這導致我的問題可能是一個配置問題,但我缺乏什麼我需要配置不同的想法。任何建議可能的原因?

編輯: 在只有兩行發送郵件的項目中,我遇到同樣的問題。當試圖通過代碼建立TCP連接時,我得到了同樣的問題,所以我知道這與SMTP協議(或認證)無關,問題在於TCP套接字連接嘗試被阻止,但我仍然不知道爲什麼

+0

如果您啓動一個新項目並只包含此代碼會發生什麼? – jim

+0

你使用什麼SMTP服務器? –

+0

@DaveG不知道它不在我的管理下,它被外包了 但我確信它與服務器無關,因爲TCP包永遠不會離開我的機器 –

回答

1

好吧,看起來系統管理員已經忘記了他們已經放置了兩個防火牆...(只花了我兩天左右的時間)當涉及到端口25我們的防病毒還包括反垃圾郵件。感謝您的想法和建議大家

1

你檢查過SMTP服務器的配置嗎?它可以配置爲不允許匿名連接或拒絕您的IP地址。

您是否可以使用其他客戶端通過SMTP服務器發送電子郵件,例如:外表?

+0

:)正如我所說我可以通過telnet連接到Smtp服務器。而我沒有提到的服務器沒有要求任何種類的憑證,我可以連接基本上任何東西,但我的.NET代碼。 (我可以使用相同的代碼連接到在同一臺機器上運行在不同端口上的不同服務器,因此我知道該代碼正在工作) –

3

你在運行什麼操作系統?我現在要說明問題,並詢問您是否已驗證Windows防火牆已關閉? (我看到你的軟件防火牆的評論,但是這往往被人忽略)正在使用

也可以嘗試,驗證端口,因爲我們要使用我們像這樣 - >

SmtpClient smtpClient = new SmtpClient("OURMAIL",25); 
smtpClient.Send(message); 

Exchange Ports

+0

我沒有在DaveG的答案下看到您的意見....嗯。 –