SMTPException大约发生在30%的时间

时间:2016-09-02 10:16:15

标签: asp.net .net smtp smtpclient

我有asp.net网页,在某些情况下通过电子邮件通知用户。然而,大约30%的案例,电子邮件未被发送并且抛出了SmtpException:

  

System.Net.Mail.SmtpException:发送邮件失败。 --->   System.IO.IOException:无法从传输中读取数据   连接:net_io_connectionclosed。

由于我一直在与这个错误作斗争,我设法提取了SmtpStatusCode,其中说:“一般失败”。作为smtp服务器,我使用mandrill设置:
<network host="smtp.mandrillapp.com" password="####" port="25" userName="####" enableSsl="false" />

任何人都可以给我一个理由,为什么这个错误只发生了30%,而且并非总是如此。我查看了有关stackoverflow的其他问题,但是当它根本不起作用时它们会涉及到这种情况。

1 个答案:

答案 0 :(得分:0)

如果您使用的是住宅互联网连接,您的ISP将通过阻止所有到端口25的出站连接来阻止外发电子邮件发送。尝试通过TCP / IP连接到本地电子邮件服务器,或连接到您自己内部网络上的连接。 / p>

<强>更新

当您要求提供历史记录时,我提到的blog回答您的问题

  

1982年,南加州大学提交了一份提案   互联网工程任务组(IETF)。征求意见(RFC)   821发布,建立端口25作为默认传输   互联网电子邮件频道。 30年后,我们仍然使用25端口   在两个邮件服务器之间传输电子邮件的主要方式。一个   然而,很少有RFC已经废弃了最初的SMTP RFC   SMTP保持不变或类似。

     

1998年12月,R。Gellens和J. Klensin提交了RFC 2476   支持为互联网电子邮件添加新规范   通信。 RFC提出了对传统消息的拆分   提交和消息中继的概念。 RFC定义了该消息   提交应通过端口587进行,以确保新的政策和   安全要求不会干扰传统的继电器   消息中继端口25上的流量。

那么为什么25号端口无法正常使用?

  

传统上由住宅ISP和云托管阻止   提供商,以遏制从被入侵中继的垃圾邮件数量   电脑或服务器。除非您专门管理邮件   服务器,您应该没有遍历此端口的流量   电脑或服务器。

为什么587会起作用?

  

这是默认的邮件提交端口。当邮件客户端或服务器时   提交电子邮件,由适当的邮件服务器路由,它应该   总是使用这个端口。

     

所有Mailgun客户都应考虑使用此端口作为默认端口,   除非您被上游网络或托管明确阻止   供应商。此端口与TLS加密相结合,将确保这一点   电子邮件是安全提交的,并遵循指定的准则   IETF。