使用SmtpClient,让“目标机器主动拒绝它”

时间:2012-07-23 22:17:29

标签: c# .net smtpclient

我正在尝试使用System.Net.Mail为应用程序发送电子邮件,但是会遇到以下异常:

  

System.Net.Mail.SmtpException:发送邮件失败。 --->   System.Net.WebException:无法连接到远程服务器--->   System.Net.Sockets.SocketException:无法建立连接   因为目标机器主动拒绝它198.238.39.170:25

我使用的代码是:

string mailserver = "Scanmail.ofm.wa.lcl";
MailMessage msg = new MailMessage("albert@einstein.net", "snark@snarky.com", "Very subjective", "A message body!");
SmtpClient client = new SmtpClient(mailserver);
client.Send(msg);

显然上面的电子邮件地址是虚构的,但在实际代码中,它使用系统中的真实电子邮件地址。邮件服务器地址准确无误。

我很想我需要在那里放置某种安全凭证,但不知道在哪里 - 尽管@ Andre_Calil的建议表明这不是问题,并且邮件服务器可能配置为阻止我的开发机器从连接。那怎么克服呢?

1 个答案:

答案 0 :(得分:10)

因此,正如我们所说,您的服务器可能配置为拒绝来自每台计算机的中继,这是推荐的安全设置。

在开发计算机上,打开提示符(command)并输入telnet SMTP_SERVER_IP_ADDRESS 25。此命令将尝试在端口25上建立基本套接字连接,这是默认的SMTP端口。如果成功,您仍然需要发现服务器是否需要身份验证。

但是,如果它不成功,您将不得不暂停代码,直到您可以获得系统管理员的帮助。

要尝试的另一件事是从应用服务器重复此相同的测试,因为SMTP服务器可能配置为allow app_serverdeny everybody_else

此致