Java 邮件 Internet 地址解析错误的格式属性没有错误。

Java Mail Internet Address parse bad format attributes without errors.

我正在使用 Java 邮件。

下面的to string格式不错,发邮件成功

String to = "abc@test.com";

而下面的 to2 字符串是错误的格式,我希望它会抛出错误,而不会抛出错误。

String to2 = 'abctest'
if (StringUtils.hasText(to2)) {
   Address[] toia2 = InternetAddress.parse(to2);
   mailMessage.setRecipients(RecipientType.TO, toia2);
}

它的行为:运行顺利抛出调试器,日志中没有错误消息,但从不发送电子邮件...

谁能教我如何更改代码,以便在检查无效 "To"、"Cc" 等电子邮件地址时抛出错误消息?

谢谢。

好的,我检查了 mail-1.4 中的代码。 InternetAddress.parse 中的代码说实话看起来很糟糕。它确实接受它进行大多数验证但不是全部验证的任何方式。查看 class 有一个方法 validate 可以执行这些验证。

所以按照下面修改代码就可以了。

   public class Sample {

    public static void main(String... args) throws AddressException {
        String to2 = "abctest";
        if (StringUtils.hasText(to2)) {
            InternetAddress[] toia2 = InternetAddress.parse(to2);
            for(InternetAddress address:toia2){
                address.validate();
            }
        }
    }
}

我正在验证上面的电子邮件地址,您可以在 for 循环中添加 mailMessage.setRecipients(RecipientType.TO, toia2); 或者您认为合适的。