2015-07-05 52 views
9

我試圖通過SmtpClient連接到我的Gmail帳戶,但它似乎無法正常工作。我指定了端口465,啓用SSL並定義了所有內容,但需要2分鐘,然後只顯示消息未發送的錯誤。使用SmtpClient從Gmail發送電子郵件

我在這裏做錯了什麼?

try 
{ 
    MailMessage msg = new MailMessage(); 
    msg.From = new MailAddress("[email protected]); 
    msg.To.Add(new MailAddress("[email protected])); 
    msg.Subject = "This is the subject"; 
    msg.Body = "This is the body"; 
    SmtpClient sc = new SmtpClient("smtp.gmail.com", 465); 
    sc.EnableSsl = true; 
    sc.UseDefaultCredentials = false; 
    sc.Credentials = new NetworkCredential("[email protected]", "pass"); 
    sc.DeliveryMethod = SmtpDeliveryMethod.Network; 
    sc.Send(msg); 
    erroremail.Text = "Email has been sent successfully."; 
} 
catch (Exception ex) 
{ 
    erroremail.Text = "ERROR: " + ex.Message; 
} 
+0

我所做的,然後它說'錯誤:SMTP服務器要求安全連接或客戶端未通過身份驗證。「 – Aradmey

+0

好的,這不是代碼問題,但它是阻止連接的Gmail設置。它現在有效! – Aradmey

回答

17

你需要讓 「不夠安全的應用」:

https://support.google.com/accounts/answer/6010255

代碼:

try 
{ 
    new SmtpClient 
    { 
     Host = "Smtp.Gmail.com", 
     Port = 587, 
     EnableSsl = true, 
     Timeout = 10000, 
     DeliveryMethod = SmtpDeliveryMethod.Network, 
     UseDefaultCredentials = false, 
     Credentials = new NetworkCredential("[email protected]", "MyPassword") 
    }.Send(new MailMessage {From = new MailAddress("[email protected]", "MyName"), To = {"[email protected]"}, Subject = "Subject", Body = "Message", BodyEncoding = Encoding.UTF8}); 
    erroremail.Text = "Email has been sent successfully."; 
} 
catch (Exception ex) 
{ 
    erroremail.Text = "ERROR: " + ex.Message; 
} 
+0

@Aatoly他已經在他的答案中發佈了一個鏈接。不太安全的應用程序是一個谷歌帳戶設置,它可以讓你的應用程序代表你發送電子郵件。 –

+0

我不知道什麼是「現代安全標準」SmtpClient缺乏,如果有一個本地的.NET選擇,不需要設置此帳戶選項。 – Slight

+0

嗨,你可以評論在這種情況下如何保證網絡憑證?好的,我看到 - 啓用SSL。但在我的情況 - 我得到一個超時... – Prokurors

相關問題