使用我正在处理的邮件应用程序,我捕获SendFailedException以处理收件人电子邮件地址的验证。在阅读了一些之后,我了解到捕获块非常昂贵。它让我想知道在发送消息之前是否有任何方法可以确定地址是否无效。这更像是一种优化问题。
答案 0 :(得分:2)
这取决于您如何定义“无效”。有一个包含电子邮件验证程序的Apache库,但这只是检查“@”符号,并检查@符号字段之前和之后是否超过限制。没有简单的方法可以验证目标邮件服务器上是否存在该地址。
SMTP协议依赖于将消息传递到可以是长链的下一个邮件服务器。从发件人的角度来看,一旦链中的下一个服务器说“我得到了”,邮件就会被“发送”。
错误可以在几天后报告,并不总是意味着地址无效。例如,电子邮箱可能已满并拒绝其他消息。处理此类回复需要状态机,因为您正在监视长时间运行的事务。