javax.mail.internet.AddressException:域包含字符串中的非法字符

时间:2016-09-23 09:42:25

标签: outlook character

尝试阅读来自Outlook的电子邮件的电子邮件收件人时:

Caused by: javax.mail.internet.AddressException: Domain contains illegal character in string ``'xxxxx@yyyyyy.com'''
  at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java:1269)
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:1091)
    at javax.mail.internet.InternetAddress.parseHeader(InternetAddress.java:658)
    at javax.mail.internet.MimeMessage.getAddressHeader(MimeMessage.java:701)
    at javax.mail.internet.MimeMessage.getRecipients(MimeMessage.java:534)

我遇到以下异常:

Folder inbox = store.getFolder(.......);
messages = inbox.getMessages();

这个角色给出了问题" ' "在电子邮件地址的开头和结尾。问题是,对于Outlook服务器,这是一个有效的地址,但不是MimeMessage,所以当我尝试检索它并应用所有检查时,我得到了异常。

请注意我没有创建消息,我只是通过以下方式阅读outlook inbox文件夹中的内容:

{{1}}

知道如何解决/解决这个问题吗?

非常感谢你 萨姆

1 个答案:

答案 0 :(得分:2)

我怀疑您使用的是高于1.4的java邮件版本,默认情况下启用严格的RFC822语法

您可以通过禁用" strict"来阅读带引号的电子邮件InternetAddress这样的政策。

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

或者只是

new InternetAddress("...", false);