2011-12-19 191 views
2

此代碼在本地工作,但是當我將它上傳到Godaddy上的服務器時,它不會發送電子郵件。任何想法,爲什麼它不能在他們的服務器上工作?我需要改變什麼?發送郵件在本地工作,但不在服務器上?

try { 
    MailMessage mail = new MailMessage(); 
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); 

    mail.From = new MailAddress("[email protected]"); 
    mail.To.Add("[email protected]"); 
    mail.Subject = "New sign up"; 
    mail.Body = "New member"; 

    SmtpServer.Port = 587; 
    SmtpServer.Credentials = new System.Net.NetworkCredential("[email protected]", "**Mypass**"); 
    SmtpServer.EnableSsl = true; 

    SmtpServer.Send(mail); 
} catch(Exception ex) { 
    throw ex; 
} 
+0

你捕獲異常? – xxpor 2011-12-19 01:24:00

回答

2

它們可能會阻止傳出SMTP連接,以防止垃圾郵件發送者使用他們的服務發送垃圾郵件。您應該檢查您收到的錯誤消息並檢查您的服務器主機的策略。

+0

連接嘗試失敗,因爲連接方在一段時間後沒有正確響應,或建立的連接失敗,因爲連接的主機未能響應74.125.53.109:25 -------這是我得到的錯誤。 – CsharpBeginner 2011-12-19 01:24:18

+0

看起來他們阻止了25端口:-( – 2011-12-19 01:25:06

+0

Godaddy現在阻止了端口25一段時間http://www.stemkoski.com/godaddy-dedicated-server-hosting-blocks-port-25/ – 2011-12-19 03:57:29

0

您需要通過godaddy smtp服務器發送您的電子郵件。在我思考之前,我遇到了同樣的問題。我相信他們會給出如何通過常見問題登錄的說明。

0

如果您有SSH訪問服務器,請嘗試通過25和465端口telnet smtp.google.com。如果出現超時,那麼您可能無法連接到某個IP範圍之外的這些端口。 端口587適用於TLS。當您使用SSL時,請嘗試使用端口465.

2

從Godaddy託管的站點內發送內容時,您需要執行幾項操作。使用他們的中繼服務器發送消息(這不適用於您的開發機器,您必須在上傳後才能進行現場測試)。 Here是中繼服務器信息。還要確保「發件人」地址是同一個域中的電子郵件。我通常使用相同的toAddress。請參閱here瞭解爲什麼這是必要的。

這是我使用的是從一個網站發送內部GoDaddy的代碼:

 btnSend.Disabled = true; 

     const string serverHost = "relay-hosting.secureserver.net"; 
     var msg = new MailMessage(toAddress, toAddress); 
     msg.ReplyTo = new MailAddress(emailFrom); 

     msg.Subject = subject; 
     msg.Body = emailBody; 
     msg.IsBodyHtml = false; 

     try 
     { 
      var smtp = new SmtpClient(); 
      smtp.Host = serverHost; 
      smtp.Credentials = new System.Net.NetworkCredential("account", "password"); 
      smtp.Send(msg); 
     } 
     catch (Exception e) 
     { 
      //Log the errors so that we can see them somewhere 
     } 
相關問題