通过Java Mail发送邮件时将替换Message-ID [英] Message-Id is being replaced when sending mail via JavaMail
问题描述
我一直试图找到解决此问题的方法,所以我决定将其发布在这里。
问题是,当我使用javaMail发送邮件时,它会自动生成Message-ID(我将其存储到数据库中以识别对此邮件的回复),但在发送邮件时,SMPT服务器出于某种原因对其进行了更改,因此我无法跟踪与此邮件相关的任何内容。
例如
我首先通过Gmail向与我的邮件客户端同步的一个帐户发送消息,然后我用消息客户端检查消息,一切正常消息ID
<CAPDSfCN1qPAhBCRmFK-zwP=MM=KjgpYuvhVRFAPwz1PjOqtnFA@mail.gmail.com>
然后我通过消息客户端发送对此消息的回复,由javaMail生成的ID为
<1907960987.0.1322086080735.JavaMail.root@smtp.live.com>
最后,当我检查我的电子邮件帐户中的回复时,它的标题中有以下值
Message-ID: <BLU0-SMTP33091BE2B32A7F46E370665C2C90@phx.gbl>
失败
In-Reply-To: <CAPDSfCN1qPAhBCRmFK-zwP=MM=KjgpYuvhVRFAPwz1PjOqtnFA@mail.gmail.com>
确定
如您所见,Message-ID已更改,我原以为是
<1907960987.0.1322086080735.JavaMail.root@smtp.live.com>
为什么会发生这种情况?
感谢您的帮助
谢谢大家
--编辑
根据建议,我使用了来自javaMail的smtpend demo进行了测试(我实现了MimeMessage的一个子类来生成我自己的Message-ID)。
java -jar -Dmail.smtp.starttls.enable=true -Dmail.smtp.port=587 SMTPSend.jar -d -M smtp.live.com -U myaccount@hotmail.com -P mypass -o myaccount@hotmail.com -A anotheraccount@gmail.com
在发送消息时的smtpend输出之间,生成了消息ID
<60eea6ae-2657-41bd-b475-3a57eff885ac@mydomain.com>
但是,当我去查看这封邮件时,邮件ID不同
<BLU0-SMTP109215E6BB99B93FC106B1E88B00@phx.gbl>
为什么它在运行中更改我的消息ID...我不明白
--编辑2
当我从Hotmail帐户发送邮件时,我注意到现在发生了这个问题 当我从Gmail帐户发送邮件时,Message-ID不再改变(我认为实现我自己的Message-ID生成方法有助于解决这个问题)感谢您的回复
推荐答案
我知道这是一个老帖子,但此答案仍然可能对人们有所帮助。
您需要在MimeMessage中覆盖updateMessageID(),因为每次在发送电子邮件之前都会调用它。
class MyMessage extends MimeMessage {
public MyMessage(Session session) {
super(session);
}
protected void updateMessageID() throws MessagingException {
setHeader("Message-ID", "<your-message-id@domain.nl>");
}
}
如果您想为每个MyMessage传递唯一的ID...
class MyMessage extends MimeMessage {
String uniqueMessageId;
public MyMessage(Session session, String uniqueMessageId) {
super(session);
this.uniqueMessageId = uniqueMessageId;
}
protected void updateMessageID() throws MessagingException {
setHeader("Message-ID", "<" + uniqueMessageId + ">");
}
}
然后调用它,例如:
MyMessage message = new MyMessage(session, "201610131428_newsletter1@domain.nl");
这篇关于通过Java Mail发送邮件时将替换Message-ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!