java - 如何解决地址无效异常

标签 java jakarta-mail

我们尝试使用 javax.mail 发送邮件。发送邮件时出现以下异常:

    **sendMail - Message Sending Failed: Invalid Addresses;
    nested exception is: 
javax.mail.SendFailedException: 550 #5.1.0 Address rejected.2013-02-28 13:17:08,236** 

可能是什么问题?

最佳答案

表示接收服务器无法识别邮件地址的邮箱('@'之前的部分)。可能是拼写错误,它只是一个不存在的名称,甚至可能是接收服务器被设置为通过使用代码 550 回复来拒绝消息(例如垃圾邮件)。

这是总结 SMTP 回复代码并提供各种相关 RFC 链接的众多页面之一: http://www.greenend.org.uk/rjk/tech/smtpreplies.html .

编辑:我需要比评论允许的更多空间来回答您的问题。

@RaghuKing,如果您查看 javax.mail.SendFailedException 的 Javadoc,您会注意到您可以在此类异常对象上调用 3 个方法(在 catch block ):

  • getInvalidAddresses() 获取无效地址数组,因此不会发送到,
  • getValidSentAddresses() 获取成功发送此消息的地址数组,以及
  • getValidUnsentAddresses() 获取有效但未向其发送消息的地址数组。

(很明显,一个人给多个收件人发送消息,可能有的成功,有的失败,但是至少有一个失败就会抛出异常,不管成功多少次。显然也如果您只发送到一个地址,则该地址只会出现在其中一个数组中,并且它可能不会出现在 ValidSent 列表中。

这些数组将为您提供有关如何处理异常的更多信息,具体取决于地址所在的数组类型。这显然取决于您的应用程序,但这些可能是合理的建议:

  • Invalid Addresses:告诉用户由于地址错误而未发送消息,对于列表中的每个无效地址,并提供更正地址的方法,然后尝试重新发送到正确的地址(如果用户没有提供不同的地址,则取消);
  • 有效的发送地址:不要重新发送;
  • 有效的未发送地址:尝试重新发送到这些地址。由于之前的地址不正确,发送可能在到达这些地址之前就停止了。

但最后是您必须运用常识,也许在您理解之前对您不了解的功能进行一些实验。

关于java - 如何解决地址无效异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15131868/

相关文章:

ssl - 无法在 weblogic 服务器中进行 SSL 连接

java - 将对象添加到此数组列表时,它们都变得相同

email - 在 Grails 邮件中获取 MailSendException

Javamail 库,跟踪特定电子邮件

java - setOnItemClickListener() 不适用于 Fragment 中的 ExpandableHeightGridView

java.lang.NoClassDefFoundError 帮助

java - 为什么转换会在本地工作而不是在服务器上工作?

Java:打开带有 IP 的 URL

java - 在名称为 'dispatcher' 的 DispatcherServlet 中找不到具有 URI [/MVCCrud/viewemp] 的 HTTP 请求的映射

java - System.out 和 System.err 调用的随机打印顺序