寻找.NET SmtpClient故障排除的想法

时间:2014-03-05 03:48:20

标签: c# .net email smtp

我一直在绞尽脑筋三个多小时,尝试一切我能想到的东西让.NET4.5 SmtpClient发送测试邮件。

我尝试过的事情:

禁用Windows防火墙

禁用路由器防火墙并启用DMZ,最大的未知

禁用防病毒软件

端口(25,26,465,587)和ssl(启用/不启用)设置的每个可能的排列

观看应用程序代码在连接查看器中打开网络连接( 连接永远不会超过SYN_SENT)

报告的异常有时“操作已经超时”。有时“连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机未能响应[ip.ad.re.ss]:587”,具体取决于所使用的设置。

这是我试图开始工作的代码,它是在Win7Pro IIS7 MVC 4应用程序中运行的:

    string fromaddress = "address@gmail.com";
    string toaddressstring = "recipient@gmail.com";
    string subjecttext = "test";
    string bodytext = "simple test email text";
    System.Net.Mail.MailMessage email = new System.Net.Mail.MailMessage();
    email.IsBodyHtml = true;
    email.Body = "simple test email body text";
    email.From = new System.Net.Mail.MailAddress(fromaddress);
    email.To.Add(toaddressstring);
    email.Subject = subjecttext;
    System.Net.Mail.SmtpClient smtpcli = new System.Net.Mail.SmtpClient();
    smtpcli.Host = "smtp.gmail.com";
    smtpcli.Port = 587;
    smtpcli.Timeout = 10000;
    smtpcli.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
    smtpcli.EnableSsl = true;
    smtpcli.UseDefaultCredentials = false;
    smtpcli.Credentials = new NetworkCredential(fromaddress, "password");
    smtpcli.Send(email);

我完全没有想法,还有什么可能是错的?任何建议都很棒。

2 个答案:

答案 0 :(得分:1)

似乎无法建立TCP连接。我测试了你的代码并且在我的电脑上运行良好。

您可以尝试从Google支持页面Problems sending mail with POP or IMAP

进行问题排查

答案 1 :(得分:0)

使用此代码并尝试检查您现在使用的不同IP。

    var message = new MailMessage();
    message.From = new MailAddress("from@gmail.com");
    MailAddress to = new MailAddress("to@gmail.com");
    message.Subject = "Subject";       
    string bodyString = "";
    bodyString += "Hello";
    message.Body = bodyString;
    message.To.Add(to);
    message.IsBodyHtml = true;
    SmtpClient smtp = new SmtpClient("smtp.gmail.com");
    smtp.Credentials = new System.Net.NetworkCredential("user@gmail.com", "password");
    smtp.EnableSsl = false;
    smtp.Send(message);