该程序在同一网络中的多台计算机上运行。邮件通过内部服务器发送。当我尝试从SmtpClient发送电子邮件时,它可以在某些计算机上运行,但在其他计算机上它可以让我:
“System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它10.1.0.74:25”
我已经尝试过了,很多答案都谈到了防火墙或smtp服务器阻塞请求。问题是它只是某些计算机上的错误,我不确定防火墙设置应该是什么。
发送电子邮件的代码如下:
public void SendMessage(string subject, string messageBody, string fromAddress, string toAddress)
{
MailMessage message = new MailMessage();
SmtpClient client = new SmtpClient("10.1.0.74", 25);
// Set the sender's address
message.From = new MailAddress(fromAddress);
// Allow multiple "To" addresses to be separated by a semi-colon
if (toAddress.Trim().Length > 0)
{
foreach (string addr in toAddress.Split(';'))
{
if (addr.Trim() != "")
message.To.Add(new MailAddress(addr));
}
}
// Set the subject and message body text
message.Subject = subject;
message.Body = messageBody;
message.IsBodyHtml = true;
// Set the SMTP server to be used to send the message
//client.Host = "smtp.gmail.com";
System.Net.NetworkCredential a = new System.Net.NetworkCredential("User", "Pass");
//client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = a;
// Send the e-mail message
client.Send(message);
}
编辑: 从无法正常工作的计算机中ping IP,得到以下信息。
答案 0 :(得分:3)
在您的客户端启用SSL并尝试其他端口:
client.EnableSsl = true;
client.Port = 587;
// or
client.Port = 465;
您还可以使用cmd命令检查连接:
telnet smtp.gmail.com 587
成功的回应通常如下:
220 mx.google.com ESMTP