2009-05-26 65 views
1

下面的代碼在出錯後讓我出錯。ASP.net SMTP連接錯誤

 MailMessage Enveloppe = new MailMessage(); 

     //emails is an array of strings 
     foreach (string email in emails) 
      Enveloppe.To.Add(email); 

     //Setup message parameters 
     Enveloppe.Subject = "Documentation"; 
     Enveloppe.Body = "Infinitelycoolbodyhere" 
     Enveloppe.From = new MailAddress("[email protected]", "Myname"); 

     //files is an array of strings 
     foreach (string filename in files) { 
      //Add attachments 
      Enveloppe.Attachments.Add(new Attachment(new System.Net.WebClient().OpenRead(filename),filename.Substring(filename.LastIndexOf('/')))); 
     } 

     //Create the smtp client, and let it do its job 
     SmtpClient Mailman = new SmtpClient("mysmtphost"); 
     Mailman.EnableSsl = true; 
     Mailman.Port = 465; 
     Mailman.DeliveryMethod = SmtpDeliveryMethod.Network; 
     Mailman.Credentials = new System.Net.NetworkCredential("usernamehere", "passwordhere"); 
     Mailman.Send(Enveloppe); 

恰巧,它要麼告訴我,我的操作超時,或「連接嘗試失敗,因爲連接的方沒有正確一段時間後響應或已建立的連接失敗,因爲連接主機未能迴應「。

我很爲難,我不知道我做錯了

更新哪一部分:我似乎無法連接到的Telnet服務器,在最好的,我用我的筆記本電腦連接(下Ubuntu的),但我從來沒有得到「200」的迴應。在Windows工作站下,我得到一個永久的空白telnet窗口。

我可以使用Thunderbird在指定的服務器上發送/接收電子郵件,沒有任何問題。

回答

1

終於找到了罪魁禍首 - 以某種方式連接被留下的「所謂正確的」 SMTP服務器託管公司給我掛之間,和實際的smtp服務器。我只是將mail.domain.com的地址更改爲smtp.hostingdomain.com,並修復了一切。

這只是我討厭的那些「什麼是地獄」時刻之一。正因爲如此,我不得不放棄基於應用程序的郵件發送功能,但最終我的老闆和我決定將文件託管在某處,並將鏈接包含在電子郵件中,而不是附加附加文件到郵件。

所以,這並沒有真正回答這個問題,而是那些考慮解決方案的人,但是你可能想把你想發送的文件放在一個可以從外部訪問的地方,並且包括鏈接。那裏。

0

SMTP服務器在465上運行並且它是否支持SSL?

+0

當第一臺服務器無法響應時,我嘗試了兩件或三件。 我嘗試使用我的personnal網站的smtp服務器使用SSL,因此代碼中的ssl部分。我沒有成功,操作超時,但由於我能夠使用加密發送 - 接收服務器的電子郵件,所以我必須假定它已啓動並正在運行。 – 2009-05-26 17:43:49

0

聽起來像嘗試與您的SMTP服務器通信時發生錯誤(哈哈,沒有狗屎!)。

我假設你在windows上,所以去開始 - >運行 - >'telnet mysmtphost 465',看看你在控制檯中得到的迴應。

你看到這樣的事嗎?

Connected to mysmtphost. 
Escape character is '^]'. 
220 mysmtphost 
+0

從我的Ubuntu筆記本電腦我得到預期的結果。從我在同一網絡上的工作站(執行代碼的東西),我得到一個永遠空白的telnet窗口。 – 2009-05-26 19:02:45

0

嘗試爲System.Net.Mail啓用跟蹤(看起來像您使用的是SNM)。爲此,您需要將以下內容添加到.config文件中。

<configuration> 
    <system.diagnostics> 
    <trace autoflush="true" /> 

    <sources> 

     <source name="System.Net" > 
     <listeners> 
      <add name="MyTraceFile"/> 
     </listeners> 
     </source> 

     <source name="System.Net.Sockets"> 
     <listeners> 
      <add name="MyTraceFile"/> 
     </listeners> 
     </source> 

    </sources> 


    <sharedListeners> 
     <add 
     name="MyTraceFile" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="System.Net.trace.log"    /> 
    </sharedListeners> 

    <switches> 
     <add name="System.Net" value="Verbose" /> 
     <add name="System.Net.Sockets" value="Verbose" /> 
    </switches> 

希望這應該至少能告訴你發生了什麼事。

我有一些更多的信息在這裏,上什麼樣的期待: http://systemnetmail.com/faq/4.10.aspx

相關問題