2017-08-08 237 views
0

我试图向多个收件人发送邮件。我正在做非常标准的事情:SendFailedException:无效地址 - 但在异常中没有无效地址

Properties p = new Properties(); 
p.setProperty("mail.smtp.host", "my.smtp.host"); 

Session session = Session.getInstance(p); 
MimeMessage msg = new MimeMessage(session); 
msg.setFrom(new InternetAddress(origin)); 
msg.setReplyTo(new InternetAddress[]{ new InternetAddress(replyTo) }); 
for(String address : destinations) { 
    msg.addRecipient(Message.RecipientType.BCC, new InternetAddress(address)); 
} 
msg.setSubject("foo"); 
msg.setText("bar"); 
msg.setSentDate(new Date()); 
Transport.send(msg); 

大部分时间它的工作,几次它不。我得到的例外是SendFailedException: Invalid Addresses。当我打印了异常的内容我得到这个:

-ivalid:[] 
-valid unsent:[[email protected], [email protected], [email protected], ...] 
-valid sent:null 

基本上它说,有一个或多个无效的地址,然后它说没有地址无效。不应该无效的地址数组至少有一个电子邮件地址?

UPDATESendFailedException被另一个例外以下消息造成:

451 4.3.0 <SENDER_EMAIL_ADDRESS>:临时查找失败

也许是消息中的无效地址不是来自任何收件人,而是来自发件人。

回答

0

它看起来不像你authenticating to your mail server,所以它可能不会让你send to non-local addresses。 (是的,在这种情况下错误信息不是很有用。)

+0

邮件服务器不需要验证。正如我所说,它大部分时间都适用。它总是向外部地址发送电子邮件(每封邮件约20个收件人)。我希望在例外中找到一些错误的电子邮件地址,但它们看起来很普通(除了一个@Gmail而不是@gmail)。无论如何,如果无效地址数组为空,我认为该消息不应该是“无效地址”。你认为这可能是错误报告中的错误吗? – Gustavo

+1

您可能需要查看[完整协议跟踪](https://javaee.github.io/javamail/FAQ#debug)以查看真正发生了什么问题。 –

+0

我仍然没有启用调试,但我更新了更多信息的问题。 – Gustavo