JavaMail addRecipient 方法存在多个 headers 问题

Multiple headers issue with JavaMail addRecipient method

邮件服务器returns当我向多个收件人发送邮件时出现此错误:

Remote Server returned 'mx.spamexperts.com #5.0.0 smtp; 550 Messages should have one or no To headers, not 5.'

当我多次使用 JavaMail 的 addRecipient 方法时发生。如果我使用 setRecipient 而不是电子邮件地址数组,它就可以工作。

这是 javax.mail.internet.InternetHeaders class 中 addHeader 方法的结果。这是导致此问题的一段代码:

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;
}

你怎么看?如果某些邮件服务器不接受,为什么 JavaMail 每次使用 addRecipient 时都会添加新的 To header?

您使用的 JavaMail 版本一定很旧。这在 5 年前的 JavaMail 1.4.4 中得到修复。 current version is 1.5.5.