javax.mail.getValidSentAddresses()

问题描述 投票:0回答:1

我更新了我的代码:

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

请指教

感谢期待

java email jakarta-mail
1个回答
0
投票

mail.smtp.reportsuccess 会话属性设置为 true。这将导致 Transport.send 始终抛出 SendFailedException。根据文档:

发送消息时,每个失败地址的详细信息可在抛出的顶级 SendFailedException 链接的 SMTPAddressFailedException 中找到。此外,如果设置了 mail.smtp.reportsuccess 属性,则 SMTPAddressSucceededException 将包含在每个成功地址的列表中。请注意,即使发送成功,这也会导致抛出顶级 SendFailedException。

使用“链式”一词意味着您必须调用 MessagingException.getNextException()

您还感兴趣的是“mail.smtp.sendpartial”属性,该属性也包含在文档中。

您还应该更改代码以使用Session.getInstance

© www.soinside.com 2019 - 2024. All rights reserved.