我尝试使用以下代码通过 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 分钟: 我立即在本地主机和ISP站点中收到此响应:
SMTP 服务器需要安全连接或客户端不需要 认证。服务器响应为:5.5.1 需要身份验证
我应该更改什么?
使用端口 587 并首先设置UseDefaultCredentials
,然后设置Credentials
smtpClient.UseDefaultCredentials =false;
smtpClient.Credentials = new System.Net.NetworkCredential("mygmail@gmail.com", password);
如果先设置凭据,则在将UseDefaultCredentials
设置为 false 时将丢失它