我一直在使用Java中的InternetAddress。我使用了下面的代码片段。

InternetAddress internetAddress = new InternetAddress("king<***@***.com>");
System.out.println(internetAddress.getPersonal());


在这种情况下,它将返回king作为输出。

InternetAddress internetAddress = new InternetAddress(",<***@***.com>");
System.out.println(internetAddress.getPersonal());


在这种情况下,没有例外,但返回null。

这里的逗号不是用双引号引起来,那么它如何被接受以及为什么它返回null而不是逗号?

谢谢。

最佳答案

根据InternetAddress解析函数文档的判断,将addressList参数解释为用逗号分隔的地址字符串列表,很可能Java会将其视为两封电子邮件,一封无效(空)地址,而一封无个人地址的电子邮件。 。

然后,您的构造函数调用new InternetAddress(“ xyz”)被传递以直接进行解析,如您所见here

对逗号有特殊处理,它会尝试将逗号检测为地址列表,您可以看到here

相关文档:https://docs.oracle.com/javaee/6/api/javax/mail/internet/InternetAddress.html#parse

10-07 18:46