我们尝试使用 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/