2015-06-15 309 views
0

我做了一個簡單的程序來發送電子郵件,但它沒有發送它們,並給我一個例外。SMTP電子郵件不發送

下面的代碼:

using System.Net; 
using System.Net.Mail; 

public class test{ 
    public static void Main() 
    { 
     SmtpClient client = new SmtpClient(); 
     client.Host = "smtp.gmail.com"; 
     client.Port = 465; 
     client.EnableSsl = true; 
     client.Credentials = new NetworkCredential("[email protected]","mypassword"); 
     client.Send("[email protected]","[email protected]","Test","Test"); 
    } 
} 

注:只需添加以下代碼行:

client.DeliveryMethod = SmtpDeliveryMethod.Network; 
client.UseDefaultCredentials = false; 

,改變了端口587,然後它說,認證是必需的,我遺憾地把我的憑據,可能是因爲端口587需要TLS而不是SSL(從我今天學到的關於這個的搜索,我知道SSL是TLS的「演變」,不是嗎?)

+1

它給出了什麼例外? **包含內部異常**,這可能是一條重要線索。 – hatchet

+0

檢查這個谷歌鏈接https://myaccount.google.com/security?pli=1並仔細看看最後一點 –

+0

這只是一個測試,我讓另一個應用程序更復雜一點,但唯一的區別是它使用變量並具有圖形界面。無論如何,它給了我這個例外:在System.dll中發生未處理的類型'System.Net.Mail.SmtpException'異常。 附加信息:已達到時間限制。 (我翻譯這最後一行,因爲它是葡萄牙語)。 – ItsaMeTuni

回答

0

Tunigamer,只是嘗試下面的代碼和工作:

SmtpClient gmailClient = new SmtpClient { 
       Host = "smtp.gmail.com", 
       Port = 587, 
       EnableSsl = true, 
       UseDefaultCredentials = false, 
       Credentials = new NetworkCredential("[email protected]", "password") 
      }; 


      using(MailMessage gMessage = new MailMessage("[email protected]", "[email protected]", "Test", "Test")) { 

       try { 
        gmailClient.Send(gMessage); 
       } catch(Exception) { } 
      } 

而且,我收到了下面這個通知從GMAIL,您需要將您的帳戶的登錄安全功能:

enter image description here