由于某些电子邮件,InternetAddress Parse 在 Mime Headers 上失败
InternetAddress Parse failing on Mime Headers because of certain emails
java-gmail-imap
的 InternetAddress.parse(String addressList, boolean strict)
函数部分用于解析由 ,
分隔的 host@domain
和 Personal 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
java-gmail-imap
的 InternetAddress.parse(String addressList, boolean strict)
函数部分用于解析由 ,
分隔的 host@domain
和 Personal 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