通过Gmail无法通过端口587发送ASP.Net电子邮件

时间:2014-02-09 13:11:09

标签: asp.net gmail

我尝试使用以下代码通过ASP.Net 2.0发送电子邮件:

  int port=465;
  //int port=587;
  SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", port);
  smtpClient.Timeout = 260000;
  smtpClient.Credentials = new System.Net.NetworkCredential("mygmail@gmail.com", password);
  smtpClient.UseDefaultCredentials =false;
  smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
  smtpClient.EnableSsl = true;

  MailMessage mail = new MailMessage();
  //Setting From , To and CC
  mail.From = new MailAddress(from);
  mail.To.Add(new MailAddress("myaddress@mydomain.com"));
  mail.Body = contents;
  smtpClient.Send(mail);

我检查了解决方案,并且使用了2个端口:465和587.端口587似乎在2 - 3年前工作。

我试过了两个,结果如下:

  • 端口465,超时4分钟:总是在我的本地主机和与ISP不同的服务器上超时
  • 端口587,超时4分钟:我立即在localhost和ISP站点获得此响应:
  

SMTP服务器需要安全连接,否则客户端不需要   认证。服务器响应为:5.5.1需要身份验证

我应该改变什么?

1 个答案:

答案 0 :(得分:1)

使用端口587并首先设置UseDefaultCredentials,然后设置Credentials

smtpClient.UseDefaultCredentials =false;

smtpClient.Credentials = new System.Net.NetworkCredential("mygmail@gmail.com", password);

如果您先设置凭据,则在将UseDefaultCredentials设置为false

时会丢失凭据