-->

如何解决地址无效异常(how resolve Address Invalid exception)

2019-08-17 05:19发布

我们尝试使用发送邮件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** 

可能是什么问题?

Answer 1:

这意味着,接收服务器无法识别邮箱中的电子邮件地址(在“@”前面的部分)。 这可能是因为它被拼错,它是一个简单的非现有的名称,或者其甚至可以是,所述接收服务器被设置为拒绝的消息(例如邮件)通过与代码550回复。

下面是总结了SMTP答复代码许多网页,并提供链接到各种相关RFC: http://www.greenend.org.uk/rjk/tech/smtpreplies.html 。

编辑:我需要一些更多的空间来回答你的问题不是评论允许。

@RaghuKing,如果你看的Javadoc javax.mail.SendFailedException ,你会发现,你可以调用3种方法这样的异常物体上(里面catch块):

  • getInvalidAddresses()来获取是无效的并且因此不被发送到的地址的数组,
  • getValidSentAddresses()到达此消息成功地放到地址的阵列,并且
  • getValidUnsentAddresses()来获取是有效的,但该消息未发送至地址数组。

(显然,如果一个发送消息给多个收件人,有些人可能会成功,有些失败,但会抛出异常,如果有至少一个出现故障,不管有多少成功的。很显然,如果你还准备发送到只有一个地址,你将在只有这些阵列中的一个是一个地址,它可能不会在ValidSent列表。

这些阵列会给你更多的信息,如何处理异常,这取决于阵列的地址是在类型这显然取决于你的应用程序,但这些可能是合理的建议:

  • 无效地址 :告诉用户未发送的消息,因为地址是错误的,因为列表中的每个无效的地址,并提供了一种方法来纠正的地址,然后尝试重新发送到正确的地址(或者如果用户不取消不提供不同的地址);
  • 有效的发送地址 :不要重新发送;
  • 有效的未发送地址 :尝试重新发送到这些地址。 可能获得发送到这些地址,因为以前的不正确地址的前停了下来。

但最终这是你谁有权申请常识,或许实验你不明白,直到你了解他们的功能有点。



Answer 2:

经历过这种相同的异常。我意识到,我不能发送电子邮件给未知用户。 咨询后,我发现我们的SMTP服务器是不是阅读开放邮件中继服务器开放邮件中继 。



文章来源: how resolve Address Invalid exception