我正在使用以下代码,每次在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防火墙已完全禁用...
答案 0 :(得分:2)
从Windows机器上尝试以下操作:
cmd
telnet smtp.gmail.com 587
如果它表示连接被拒绝或类似,那么它就是防火墙或网络问题,与代码无关。
答案 1 :(得分:1)
很难说是不是这样,但我们曾经有过这个问题,而且它是一个防病毒工具,是罪魁祸首。
答案 2 :(得分:0)
您是否在所有三个系统上使用相同版本的System.Net.Mail?
此外,可能与Windows防火墙阻止连接(或其他一些防火墙)有关。
答案 3 :(得分:0)
我怀疑这与操作系统有什么关系,这种类型的异常通常是从内部冒出来的。捕获异常并查看内部异常,看看真正的问题是什么。
但是,这类问题通常是防火墙阻塞,远程smtp服务器阻止传入请求,或者您的计算机阻止了端口25上的传出请求。