就我的研究而言,字符串[docxa] l.hri@txwt.org不是语法上有效的电子邮件地址,因为方括号不在带引号的字符串中.
但是,类javax.mail.internet.InternetAddress接受此地址作为有效地址,因为它只是从其构造函数调用的.parse(..)方法中的地址中剥离[docxa]部分.
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]”是一个错误.