InternetAddress允许localpart中的方括号 - bug?

时间:2018-02-13 10:30:55

标签: java javamail special-characters

就我的研究而言,字符串[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中的错误,还是我的研究或我对它的理解不完整?

1 个答案:

答案 0 :(得分:1)

是的,这是一个错误,InternetAddress剥离了领先的" [docxa]"。