在javamail中解析电子邮件中的"from"地址



我正在尝试使用Javamail从收件箱中阅读电子邮件,并且我专门检查具有"交付状态通知"的电子邮件。这是代码:

for(Message message:messages){
            for(Address a:message.getFrom()){
                if(message.getSubject().equalsIgnoreCase("Delivery Status Notification")){
                Multipart mp=(Multipart)message.getContent();                                        
                for(int i=0;i<mp.getCount();i++) {
                    BodyPart bodyPart = mp.getBodyPart(i);
                    if (bodyPart.isMimeType("text/*")) {
                    String cont = (String) bodyPart.getContent();
                    System.out.println("Content: "+cont);
                    }
                }                    
                System.out.println("-----n");
               }
            }

问题在于这些通知的发件人是"邮件传递系统"和行

地址A:message.getFrom()

抛出错误 - " javax.mail.internet.addressexception:本地地址包含字符串中的控制或空间````邮件递送''。

如何解析此地址而不必捕获异常然后使用它?

感谢您的任何帮助。

一些邮件服务器使用伪造和非法地址发送这些送货通知消息。当然,您应该向邮件服务器供应商报告此错误。

当您等待供应商解决问题时,您可以通过设置以下会话属性在Javamail中处理它:

  session.setProperty("mail.mime.address.strict", "false");

session.setproperty()在我的情况下未被认可。我使用了以下实施,它起作用了!

Properties props = new Properties();
props.put("mail.mime.address.strict", "false");
Session session = Session.getDefaultInstance(props);

相关内容

最新更新