不能使用c#和gmail从生产服务器发送电子邮件
本文关键字:服务器 电子邮件 gmail 不能 | 更新日期: 2023-09-27 18:14:13
我在我的开发环境(windows 7, visual studio 2010)上测试了这段代码,它工作得很好
public static bool SendMail(string to, string subject, string message)
{
try
{
NetworkCredential loginInfo = new NetworkCredential("mylogin","mypassowrd");
MailMessage msg = new MailMessage();
msg.From = new MailAddress("mylogin");
msg.To.Add(new MailAddress(to));
msg.Subject = subject;
msg.Body = message;
msg.IsBodyHtml = true;
SmtpClient client = new SmtpClient("smtp.gmail.com",587);
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = loginInfo;
client.Send(msg);
return true;
}
catch (Exception)
{
return false;
}
}
但是当我把它移动到我的生产服务器(windows server 2008)它不工作。我最初的想法是防火墙阻塞了端口,所以我创建了一个Outbound Rule来使用TCP协议打开端口587。但是这行不通。
如有任何见解,我将不胜感激。
谢谢
您是否验证了您可以从服务器上的其他工具访问smtp.gmail.com上的587端口?在生产环境中,可以对端口进行过滤的地方有很多——包括网络中的防火墙和路由器,而不仅仅是服务器上的防火墙。
验证应用程序网络连通性的一种方法是尝试在应用程序中发送邮件,同时在服务器的控制台中运行命令netstat -n
。如果到smtp.gmail.com的连接卡住为SYN_SENT
,则没有建立TCP连接