【问题标题】:Is there a way to determine if an recipient email address is invalid [duplicate]有没有办法确定收件人电子邮件地址是否无效[重复]
【发布时间】:2014-07-15 00:03:34
【问题描述】:

在我正在开发的邮件应用程序中,我捕获了 SendFailedException 来处理收件人电子邮件地址的验证。不过,在阅读了更多内容之后,我了解到 catch 块非常昂贵。这让我想知道在发送消息之前是否有任何方法可以确定地址是否无效。这更像是一个优化问题。

【问题讨论】:

  • 您可以检查正则表达式。所以如果邮箱地址输入正确
  • 从我从正则表达式中收集的信息来看,它仍然不是验证地址的可靠方法。不过谢谢,我可能会在我的应用程序中添加正则表达式
  • 发送电子邮件或检查它是否存在涉及网络交易,这比catch块更昂贵。如果您预先检查电子邮件的有效性,请检查正确性,不应该是 catch 块的不良性能
  • 是的,也可能是这样。正则表达式是可能的并且不涉及网络事务。虽然这不是一种万无一失的方法

标签: java exception optimization jakarta-mail catch-block


【解决方案1】:

这取决于您如何定义“无效”。有一个包含电子邮件验证器的 Apache 库,但这只是检查“@”符号,并检查 @ 符号之前和之后的字段不超过限制。没有简单的方法来验证该地址是否存在于目标邮件服务器上。

SMTP 协议依赖于将消息传递到可能是长链中的下一个邮件服务器。从发件人的角度来看,一旦链中的下一个服务器说“我收到了”,邮件就会“发送”。

错误可以在几天后报告,并不总是意味着地址无效。例如,电子邮件信箱可能已满并拒绝更多消息。处理此类回复需要状态机,因为您正在监控一个长时间运行的事务。

【讨论】:

  • “无效”是指它不存在。它可能没有域或可能包含无法在电子邮件地址中使用的字符
  • 我建议您查看 Wikipedia 文章“电子邮件地址”并阅读位于 tools.ietf.org/html/rfc5321 的 RFC。这些应该明确验证电子邮件地址的可能性。
猜你喜欢
  • 2015-10-21
  • 2010-09-16
  • 2018-10-21
  • 2017-07-23
  • 2015-11-19
  • 2011-03-09
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多