2009-12-24 30 views
0

我有一個web應用程序,我將它設置爲使用MailHelper.cs和web.config設置通過gmail帳戶自動發送電子郵件。我的應用程序已經工作了10天,現在它給了我錯誤,並在發送電子郵件時停止處理錯誤,它是「發送郵件失敗。」和內側的例外是「A套接字操作嘗試一個無法連接的主機216.239.59.109:587」這裏是代碼:使用MailHelper.cs的電子郵件問題

<mailSettings> 
    <smtp from="[email protected]"> 
    <network host="smtp.gmail.com" 
      port="587" 
      userName="[email protected]" 
      password="mypass"/> 
    </smtp> 
</mailSettings> 

using System.Net.Mail; 

public class MailHelper 
{ 
    /// <summary> 
    /// Sends an mail message 
    /// </summary> 
    /// <param name="from">Sender address</param> 
    /// <param name="to">Recepient address</param> 
    /// <param name="bcc">Bcc recepient</param> 
    /// <param name="cc">Cc recepient</param> 
    /// <param name="subject">Subject of mail message</param> 
    /// <param name="body">Body of mail message</param> 
    public static void SendMailMessage(string from, string to, string bcc, string cc, string subject, string body) 
    { 
     // Instantiate a new instance of MailMessage 
     MailMessage mMailMessage = new MailMessage(); 

     // Set the sender address of the mail message 
     mMailMessage.From = new MailAddress(from); 
     // Set the recepient address of the mail message 
     mMailMessage.To.Add(new MailAddress(to)); 
     // Check if the bcc value is null or an empty string 
     if ((bcc != null) && (bcc != string.Empty)) 
     { 
     // Set the Bcc address of the mail message 
     mMailMessage.Bcc.Add(new MailAddress(bcc)); 
     } 

     // Check if the cc value is null or an empty value 
     if ((cc != null) && (cc != string.Empty)) 
     { 
     // Set the CC address of the mail message 
     mMailMessage.CC.Add(new MailAddress(cc)); 
     }  // Set the subject of the mail message 
     mMailMessage.Subject = subject; 
     // Set the body of the mail message 
     mMailMessage.Body = body; 
     // Set the format of the mail message body as HTML 
     mMailMessage.IsBodyHtml = true; 
     // Set the priority of the mail message to normal 
     mMailMessage.Priority = MailPriority.Normal; 

     // Instantiate a new instance of SmtpClient 
      SmtpClient mSmtpClient = new SmtpClient(); 
      mSmtpClient.Host = "smtp.gmail.com"; 
      mSmtpClient.Port = 587; 
      mSmtpClient.EnableSsl = true; 

     // Send the mail message 
     mSmtpClient.Send(mMailMessage); 
    } 
} 
+0

當我需要新的項目需要MailHelper時,我再次回到這個問題。一個比它的答案更有用的問題。 – 2013-01-30 06:42:12

回答

0

正如在casperOne的編輯中所述,這似乎不是一個庫問題,而是一個主機/ gMail服務器問題。

等式的其中一個方面是阻止溝通。我傾向於指向主機而不是gMail。

在開始行動之前,您能發送多少封電子郵件? 誰是你的房東?

許多主機都會限制您發送的外發電子郵件數量,因爲他們不希望您使它們看起來像垃圾郵件發送者。

+0

是的,我這麼認爲,但我對發送郵件沒有任何限制,我想我應該和我的主持人談談。 – kamiar3001 2009-12-25 08:53:17

+0

謝謝,這是正確的答案。 – kamiar3001 2009-12-25 08:53:57

0

我會強烈建議安裝Elmah(或在配置文件中打開完整的異常信息),以便您可以捕獲ASP.NET應用程序中的異常。一旦你這樣做,你應該能夠提供更多關於你可以在這裏複製的異常的信息。

異常(我猜這裏更重要的是InnerException屬性)可能會告訴你你(或我們)需要的一切。


根據評論,您似乎在主機上遇到問題並允許您到達該地址(或端點拒絕您)。這似乎更像一個配置/主機問題,而不是庫問題。

你能從你的機器上的控制檯應用程序中獲得它嗎?

+0

內部例外是: 套接字操作嘗試到不可訪問的主機216.239.59.109:587 – kamiar3001 2009-12-24 23:43:37

+0

是的,我可以從我的本地機器上輕鬆地運行它,但是當我將它發佈到我的主機服務器時,它給了我這樣的錯誤。 – kamiar3001 2009-12-25 08:48:38