在某些计算机上只能“因为目标机器主动拒绝它而无法建立连接”

时间:2013-08-26 17:47:55

标签: c# email smtpclient

该程序在同一网络中的多台计算机上运行。邮件通过内部服务器发送。当我尝试从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,得到以下信息。  enter image description here

1 个答案:

答案 0 :(得分:3)

在您的客户端启用SSL并尝试其他端口:

client.EnableSsl = true;
client.Port = 587;
// or 
client.Port = 465;

您还可以使用cmd命令检查连接:

telnet smtp.gmail.com 587

成功的回应通常如下:

220 mx.google.com ESMTP