当我发送包含多个收件人的邮件时,邮件服务器会返回此错误:
远程服务器返回' 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
标头?