在尝试读取来自 Outlook 的电子邮件的电子邮件收件人时:
message.getRecipients(Message.RecipientType.TO)
Run Code Online (Sandbox Code Playgroud)
我收到以下异常:
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)
Run Code Online (Sandbox Code Playgroud)
问题由电子邮件地址开头和结尾的字符“'”给出。问题是,对于 Outlook 服务器,这是一个有效地址,但对于 MimeMessage 无效,因此当我尝试检索它并应用所有检查时,我收到了异常。
请注意,我不是在创建消息,我只是通过以下方式阅读 Outlook 收件箱文件夹中的任何内容:
Folder inbox = store.getFolder(.......);
messages = inbox.getMessages();
Run Code Online (Sandbox Code Playgroud)
知道如何解决/解决这个问题吗?
非常感谢山姆
我怀疑您使用的 java 邮件版本高于 1.4,默认情况下启用严格的 RFC822 语法
您可以通过禁用InternetAddress上的“严格”策略来阅读带有引号的电子邮件。
Properties props = new Properties();
props.setProperty("mail.mime.address.strict", "false");
Session session = Session.getDefaultInstance(props, ....);
Run Code Online (Sandbox Code Playgroud)
或者干脆
new InternetAddress("...", false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3976 次 |
| 最近记录: |