我将 Spring JavaMail 用于我的电子邮件通信应用程序。如何实现因邮箱地址错误导致邮件投递失败的功能?
问问题
1811 次
2 回答
3
可靠地实现这一目标并非易事。RFC 821 中的 SMTP 协议规范指定了许多返回代码。值得注意的是 550 是 SMTP 服务器在尝试向不存在的地址发送电子邮件时应返回的值。我说应该是因为大多数面向公众的 SMTP 服务器不会这样做——它们要么悄悄地接受邮件然后丢弃它,或者如果他们更有礼貌,接受邮件但发回“传递失败”通知发件人(“发件人”地址)。如果发件人向不存在的地址发送足够多的电子邮件以防止垃圾邮件,MSN 和 Gmail 等公共服务也会将发件人列入黑名单。
这样做的原因是为了防止电子邮件钓鱼和垃圾邮件。
所以你可以做的是
SendFailedException
在您的代码中检查。这仅适用于遵循 SMTP 规范并实际发回错误代码的服务器。就像我说的,很少有公共服务器真正做到这一点。- 为您用作发件人的地址设置一个适当的邮箱,并监视该收件箱中的传递失败通知。注意认为这些不需要遵循任何常见的模式,这就是为什么这不是微不足道的。
- 对于没有任何通知的邮件服务器,你真的无从知晓。
这是公司从专门的提供商那里购买大量电子邮件服务的原因之一,因为他们已经构建了所有这些东西来衡量跳出率等。但即使有了这些,它也永远不会 100% 准确。
于 2012-10-01T09:17:20.637 回答
1
这些常见问题解答条目也可能有所帮助:
于 2012-10-01T18:00:39.303 回答