我一直在使用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