1

我将 Spring JavaMail 用于我的电子邮件通信应用程序。如何实现因邮箱地址错误导致邮件投递失败的功能?

4

2 回答 2

3

可靠地实现这一目标并非易事。RFC 821 中的 SMTP 协议规范指定了许多返回代码。值得注意的是 550 是 SMTP 服务器在尝试向不存在的地址发送电子邮件时应返回的值。我说应该是因为大多数面向公众的 SMTP 服务器不会这样做——它们要么悄悄地接受邮件然后丢弃它,或者如果他们更有礼貌,接受邮件但发回“传递失败”通知发件人(“发件人”地址)。如果发件人向不存在的地址发送足够多的电子邮件以防止垃圾邮件,MSN 和 Gmail 等公共服务也会将发件人列入黑名单。

这样做的原因是为了防止电子邮件钓鱼和垃圾邮件。

所以你可以做的是

  1. SendFailedException在您的代码中检查。这仅适用于遵循 SMTP 规范并实际发回错误代码的服务器。就像我说的,很少有公共服务器真正做到这一点。
  2. 为您用作发件人的地址设置一个适当的邮箱,并监视该收件箱中的传递失败通知。注意认为这些不需要遵循任何常见的模式,这就是为什么这不是微不足道的。
  3. 对于没有任何通知的邮件服务器,你真的无从知晓。

这是公司从专门的提供商那里购买大量电子邮件服务的原因之一,因为他们已经构建了所有这些东西来衡量跳出率等。但即使有了这些,它也永远不会 100% 准确。

于 2012-10-01T09:17:20.637 回答