JavaMail addRecipient方法存在多个标头问题

时间:2016-05-15 09:36:56

标签: java javamail email-headers

当我发送包含多个收件人的邮件时,邮件服务器会返回此错误:

  

远程服务器返回' mx.spamexperts.com#5.0.0 smtp; 550消息应该有一个或没有To标头,而不是5个。'

当我多次使用JavaMail的addRecipient方法时会发生这种情况。如果我使用setRecipient代替电子邮件地址数组,则可以使用。

这是addHeader课程中javax.mail.internet.InternetHeaders方法的结果。以下是导致此问题的代码:

for (int i = headers.size() - 1; i >= 0; i--) {
    InternetHeader h = (InternetHeader)headers.get(i);
    if (name.equalsIgnoreCase(h.getName())) {
    if (addReverse) {
        pos = i;
    } else {
        headers.add(i + 1, new InternetHeader(name, value));
        return;
    }
    }
    // marker for default place to add new headers
    if (h.getName().equals(":"))
    pos = i;
}

你怎么看?为什么每次我们使用To时,如果某个邮件服务器不接受它,JavaMail会添加新的addRecipient标头?

1 个答案:

答案 0 :(得分:0)

您必须使用非常旧版本的JavaMail。这在5年前的JavaMail 1.4.4中得到了修复。 current version is 1.5.5