为什么SmtpClient在XP / Vista / Win7上表现不同

时间:2010-01-27 13:17:34

标签: c# .net gmail smtpclient

我正在使用以下代码,每次在Vista / Win7上都能正常运行。

private void SendEmail(string subject, string body, string attach)
{
    using (MailMessage message = new MailMessage("username@gmail.com", "username@gmail.com", subject, body))
    {
        message.IsBodyHtml = true;

        if (!string.IsNullOrEmpty(attach))
        {
            Attachment attached = new Attachment(attach);
            message.Attachments.Add(attached);
        }

        SmtpClient client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("username@gmail.com", "password"),
            EnableSsl = true,
            DeliveryMethod = SmtpDeliveryMethod.Network
        };

        client.Send(message);
    }
}

但是在Windows XP上我得到了:

No connection could be made because the target machine actively refuses it

我已经检查过,Windows防火墙已完全禁用...

4 个答案:

答案 0 :(得分:2)

从Windows机器上尝试以下操作:

  1. windows key + r
  2. 输入cmd
  3. 输入telnet smtp.gmail.com 587
  4. 如果它表示连接被拒绝或类似,那么它就是防火墙或网络问题,与代码无关。

答案 1 :(得分:1)

很难说是不是这样,但我们曾经有过这个问题,而且它是一个防病毒工具,是罪魁祸首。

答案 2 :(得分:0)

您是否在所有三个系统上使用相同版本的System.Net.Mail?

此外,可能与Windows防火墙阻止连接(或其他一些防火墙)有关。

答案 3 :(得分:0)

我怀疑这与操作系统有什么关系,这种类型的异常通常是从内部冒出来的。捕获异常并查看内部异常,看看真正的问题是什么。

但是,这类问题通常是防火墙阻塞,远程smtp服务器阻止传入请求,或者您的计算机阻止了端口25上的传出请求。