我更新了我的代码:
1)我添加了以下属性:
Properties props=new Properties();
props.put(smtp,host);
props.put("mail.smtp.reportsuccess","true");
props.put("mail.smtp.sendpartial", "true");
然后按照答案中的指示编写此块:
}catch (MessagingException mex){
Exception ex = mex;
do {
if(ex instanceof SendFailedException) {
SendFailedException sfe = (SendFailedException) ex;
Address[] vsa = sfe.getValidSentAddresses();
Address[] vua = sfe.getValidUnsentAddresses();
Address[] ia = sfe.getInvalidAddresses();
if(vsa !=null || vsa.length>0){
String validSentAddresses = vsa[0].toString();
printReport("GSWvalidSentAddresses.txt", validSentAddresses);
}
else if(vua !=null || vua.length>0){
String validUnsentAddresses = vua[0].toString();
printReport("GSWvalidUnsentAddresses.txt", validUnsentAddresses);
}
else if(ia !=null || ia.length>0){
String invalidAddresses = ia[0].toString();
printReport("GSWinvalidAddresses.txt", invalidAddresses);
}
else{}
if (ex instanceof MessagingException)
ex = ((MessagingException) ex).getNextException();
else
ex = null;
}//
} while (ex != null);
}//main catch block
}
运行时抛出 504 Gateway Time-out--------nginx
请指教
感谢期待
将 mail.smtp.reportsuccess 会话属性设置为 true。这将导致 Transport.send 始终抛出 SendFailedException。根据文档:
发送消息时,每个失败地址的详细信息可在抛出的顶级 SendFailedException 链接的 SMTPAddressFailedException 中找到。此外,如果设置了 mail.smtp.reportsuccess 属性,则 SMTPAddressSucceededException 将包含在每个成功地址的列表中。请注意,即使发送成功,这也会导致抛出顶级 SendFailedException。
使用“链式”一词意味着您必须调用 MessagingException.getNextException()。
您还感兴趣的是“mail.smtp.sendpartial”属性,该属性也包含在文档中。
您还应该更改代码以使用Session.getInstance。