由于某些电子邮件,InternetAddress Parse 在 Mime Headers 上失败

InternetAddress Parse failing on Mime Headers because of certain emails

java-gmail-imapInternetAddress.parse(String addressList, boolean strict) 函数部分用于解析由 , 分隔的 host@domainPersonal Name <host@domain> 形式的电子邮件列表,符合RFC822 标准。

这通常用于解析电子邮件的 mime headers(这存在于 gmail Message object 返回的 MessagePartHeader 中 api).

问题parse方法在遇到无法解析的电子邮件地址时抛出AddressException。问题是它无法解析整个地址列表,因为可能有一个 faulty/malformed/non-ascii 电子邮件地址。有没有好的方法可以将 mime headers(例如 to、bcc、cc)拆分成单独的电子邮件地址并单独解析它们? (这不像 , 上的拆分那么简单,因为名称可能包含 ,)。这样我就可以本地化错误的电子邮件地址。

此外,是否有更好的 java mime 解析器可以解析电子邮件地址中包含 non-ascii 个字符的电子邮件(RFC6530、RFC6531 和 RFC6532)?这样我就可以更好地解析这个不符合 RFC822 的本地化错误电子邮件地址。

最新版本的 JavaMail 1.6.0 引入了一个新会话 属性,它允许使用 UTF-8 邮件地址。只需在会话属性中将 mail.mime.allowutf8 设置为 true

Properties props = new Properties();
props.put("mail.mime.allowutf8", true);
Session.getInstance(props)

查看 changelog