【问题标题】:SmtpClient.Send ExceptionSmtpClient.Send 异常
【发布时间】:2011-03-06 16:48:23
【问题描述】:

我的网站会发送购买确认电子邮件。 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 运行的。

知道为什么这只会在一小部分时间发生吗?

谢谢。

戴夫

【问题讨论】:

    标签: asp.net email https smtpclient


    【解决方案1】:

    我不知道为什么邮件有时会失败。据我所知,这可能是防火墙或邮件服务器本身的定期维护。

    我建议您异步发送邮件,而不是作为“确认”按钮过程的一部分。只需将邮件放在(永久)存储上,然后在中间的一段时间内继续尝试发送。

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

    【讨论】:

      【解决方案2】:

      根据您的说明,有可能并且很可能存在实际的网络错误,阻止您的站点与 SMTP 服务器连接/通信。这可能是流量过多或网络连接速度慢的结果。我的建议是尝试/捕获电子邮件代码,并在放弃之前重试几次发送电子邮件。

      当您提到这在 95% 的情况下都有效时,这表明问题很可能不在您的控制范围内。

      作为旁注,您或许应该考虑不要放弃您的 SMTP 服务器的实际 IP 地址(这与问题无关)

      【讨论】:

      • 哦,但我喜欢这个 IP 地址。也许我可以通过它路由我的垃圾邮件。需要一些蓝色药丸吗?真的很便宜... :)
      • 我并不担心输入 IP,因为它会拒绝主机网络之外的任何连接。
      猜你喜欢
      • 2019-06-11
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多