我一直在绞尽脑筋三个多小时,尝试一切我能想到的东西让.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);
我完全没有想法,还有什么可能是错的?任何建议都很棒。
答案 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);