我们尝试使用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**
可能是什么问题?
答案 0 :(得分:13)
这表示接收服务器无法识别电子邮件地址的邮箱(“@”之前的部分)。它可能是拼写错误,它只是一个不存在的名称,或者甚至可能是接收服务器被设置为通过回复代码550来拒绝消息(例如垃圾邮件)。
以下是总结SMTP回复代码的众多页面之一,并提供了各种相关RFC的链接: http://www.greenend.org.uk/rjk/tech/smtpreplies.html。
编辑:我需要更多的空间来回答你的问题,而不是评论允许的。
@RaghuKing,如果你看一下javax.mail.SendFailedException
的Javadoc,你会注意到你可以在这样的异常对象上调用3个方法(在catch
块内):
getInvalidAddresses()
获取无效且因此未发送到的地址数组getValidSentAddresses()
获取成功发送此邮件的地址数组,getValidUnsentAddresses()
获取有效但未向其发送消息的地址数组。
(显然,如果有人向多个收件人发送邮件,有些可能会成功,有些会失败,但如果至少有一次失败,则抛出异常,无论取得多少成功。显然也是如果您只发送一个地址,那么您将只在其中一个数组中拥有该地址,并且它可能不在 ValidSent 列表中。
这些数组将为您提供有关如何处理异常的更多信息,具体取决于地址所在的数组类型。这显然取决于您的应用程序,但这些可能是合理的建议:< / p>
但最终你必须运用常识,并且在你理解它们之前,可能会尝试一些你不理解的功能。
答案 1 :(得分:1)
此代码可以打印无效地址的日志:
const data = [{
due_at: '2019-09-10',
yards: [{
name: 'test'
}, {
name: 'test2'
}]
}];
const events = data.reduce((a, {due_at: start, yards}) =>
[...a, ...yards.map(({name:title}) => ({start, end: start, title}))],
[]);
console.log(events);
答案 2 :(得分:0)
曾经历过同样的例外。我意识到我无法向未知用户发送电子邮件。咨询后,我发现我们的SMTP服务器不是一个开放式邮件中继服务器,只读Open mail Relay。