2015-06-15 312 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