SmtpException - 远程主机强行关闭连接。 / 操作已超时

时间:2011-01-30 08:06:36

标签: c# email smtp smtpclient

所有。我在这个项目中的目的是通过允许其他程序调用我的程序来创建一个进程完成警报系统,并向手机发送一条短信,并通过一条消息通知收件人进程完成(在我的情况下, 3ds Max渲染)。

不幸的是,这部分代码完全失败了。它执行时没有问题直到“smtp.Send(msg);”,此时SmtpException通知我远程主机强行关闭了我的“现有连接”。

   MailMessage msg = new MailMessage();
   msg.From = new MailAddress("zaccrites@att.net");
   msg.To.Add("zaccrites@att.net");
   msg.Subject = "Subject";
   msg.Body = "THIS IS A MESSAGE!";

   SmtpClient smtp = new SmtpClient("smtp.att.yahoo.com", 645);
   //smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
   //smtp.UseDefaultCredentials = false;
   smtp.Credentials = new NetworkCredential("zaccrites@att.net", "password");
   smtp.EnableSsl = true;

   Console.WriteLine("Send Start...");
   smtp.Send(msg);
   Console.WriteLine("Message Sent");

我觉得我应该知道这里发生了什么,但我不知道。我在互联网上搜索了几个小时和几个小时,找到了与我相似情况的人,但没有人愿意回应他们的求助请求。也许我的运气会更好。

谢谢大家。

有趣的是,远程主机不再强行关闭我的连接。操作只是超时。

2 个答案:

答案 0 :(得分:0)

我不确定为什么它不起作用,你确定你的防火墙没有阻止你吗?尝试telnet到SMTP服务器(dos提示符 - > telnet smtp.att.yahoo.com 645.另外,尝试在app.config中添加邮件服务器信息,如下所示:

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="testuser@domail.com">
            <network defaultCredentials="true" host="smtp.att.yahoo.com" port="645" userName="yourUser" password="yourPass"/>
        </smtp>
    </mailSettings>
</system.net>

答案 1 :(得分:0)

有很多可能的原因:

  1. 正在运行的机器正在阻止连接。例如防火墙/防病毒软件。
  2. 计算机本地网络上的设备阻止连接。防火墙/路由器配置。
  3. ISP的网络(机器已开启)正在阻止连接。
  4. 您要连接的SMTP服务器(Yahoo)不喜欢您的计算机。
  5. 最后一个是最有可能的。排除故障的最佳方法是尝试发送到其他服务器上的其他帐户。