就我的研究而言,字符串 [docxa]l.hri@txwt.org
不是语法上有效的电子邮件地址,因为方括号是不在引号字符串中。
但是,类 javax.mail.internet.InternetAddress
接受这个地址作为有效地址,因为它只是从其地址中删除了 [docxa]
部分.parse(..)
方法,由构造函数调用。
InternetAddress.parse(String, boolean, boolean)
中的代码注释表明,实现者自己也不确定:
case '[': // a domain-literal, probably
这是我为验证问题而创建的测试,它失败了:
@Test
public void givenUnquotedEmailAddressWithSquareBracketsInLocalPartThenValidationShouldFail() {
try {
new InternetAddress("[docxa]l.hri@txwt.org", true).validate();
fail("address should be invalid");
} catch (AddressException e) {
// expected
}
}
那么,这是 InternetAddress
中的错误,还是我的研究或我对它的理解不完整?
最佳答案
是的,这是一个错误,InternetAddress 去掉了开头的“[docxa]”。
关于java - InternetAddress 允许在本地部分使用方括号 - 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48764597/