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.
邮件服务器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.