不能使用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。但是这行不通。

如有任何见解,我将不胜感激。

谢谢

不能使用c#和gmail从生产服务器发送电子邮件

您是否验证了您可以从服务器上的其他工具访问smtp.gmail.com上的587端口?在生产环境中,可以对端口进行过滤的地方有很多——包括网络中的防火墙和路由器,而不仅仅是服务器上的防火墙。

验证应用程序网络连通性的一种方法是尝试在应用程序中发送邮件,同时在服务器的控制台中运行命令netstat -n。如果到smtp.gmail.com的连接卡住为SYN_SENT,则没有建立TCP连接
相关文章: