SmtpClient.Send异常

时间:2011-03-06 16:48:24

标签: asp.net email https smtpclient

我的网站通过购买发送确认电子邮件。 95%的时间,它的工作原理。在点击运行付款的“确认”按钮并且应该发送电子邮件后,另外5%,我得到以下例外:

详细信息:

  

例外:发送邮件失败。

     

内部异常:无法连接   远程服务器
  内在例外   (2):连接尝试失败   因为关联方没有   经过一段时间的正确回应   时间,或建立的连接失败   因为连接主机失败了   回复72.167.234.197:25

发送电子邮件的代码是:

Dim smtpClientPayPalSuccess As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient()
smtpClientPayPalSuccess.Host = "relay-hosting.secureserver.net"
smtpClientPayPalSuccess.Send(mailMessagePayPalSuccess)

仅供参考:我已经向托管确认我不需要任何凭据或不同于25的端口号。这也是通过https运行的。

任何想法为什么这只会在一小部分时间内发生?

感谢。

戴夫

2 个答案:

答案 0 :(得分:1)

我不知道为什么邮件会在一段时间内失败。据我所知,可以安排防火墙或邮件服务器本身的维护。

我建议您异步发送邮件,而不是“确认”按钮过程的一部分。只需将邮件放在(持久性)商店上,并继续尝试在一段时间内发送邮件。

另外(并且衷心推荐)是将邮件从您的应用程序发送到本地邮件服务器,并让该邮件服务器将邮件转发到72.167.234.197:25。这样你就可以免费获得重试,并且发送邮件到localhost失败的可能性非常小(或者它应该很小)。

答案 1 :(得分:0)

根据您的说明,很可能存在实际的网络错误,导致您的网站无法与SMTP服务器连接/通信。这可能是流量过大或网络连接速度缓慢的结果。我的建议是对电子邮件代码进行try / catch,也许在放弃之前重试发送几次电子邮件。

如果你提到这种情况在95%的情况下有效,那就表明这个问题很可能超出你的控制范围。

作为旁注,您应该考虑不要放弃SMTP服务器的实际IP地址(这对问题没有影响)