我试图找到一个解决方案,希望运气好,所以我决定将其发布在这里。
问题是,当我使用 javaMail 发送消息时,它会自动生成一个消息 ID(我将其存储到数据库中,然后识别对此消息的回复),但当消息发送时,由于某种原因,smpt 服务器会更改该消息 ID。已发送,因此我无法追踪与此消息相关的任何内容。
例如
我首先通过 gmail 向与我的邮件客户端同步的帐户之一发送一条消息,然后我使用我的消息客户端检查该消息,一切正常,Message-Id 是
<CAPDSf[email protected] /cdn-cgi/l/email-protection>
然后我通过我的消息客户端发送此消息的回复,javaMail 生成的 id 是
<[email protected] /cdn-cgi/l/email-protection>
最后,当我去检查我的电子邮件帐户中的回复时,它的标题中有以下值
Message-ID: <[email protected] /cdn-cgi/l/email-protection>
FAIL
In-Reply-To: <CAPDSf[email protected] /cdn-cgi/l/email-protection>
OK
正如你所看到的,消息 ID 已更改,我希望它是
<[email protected] /cdn-cgi/l/email-protection>
为什么会发生这种情况?
我很感激任何帮助
谢谢你们
--Edit
根据建议,我使用 javaMail 中的 smtpsend demo 进行了测试(我实现了 MimeMessage 的子类来生成我自己的 Message-Id)。
java -jar -Dmail.smtp.starttls.enable=true -Dmail.smtp.port=587 SMTPSend.jar -d -M smtp.live.com -U [email protected] /cdn-cgi/l/email-protection -P mypass -o [email protected] /cdn-cgi/l/email-protection -A [email protected] /cdn-cgi/l/email-protection
发送消息时,在 smtpsend 输出之间,生成了 Message-Id
<[email protected] /cdn-cgi/l/email-protection>
但是当我去查看这条消息时[电子邮件受保护] /cdn-cgi/l/email-protection, Message-Id 不同
<[email protected] /cdn-cgi/l/email-protection>
为什么它会动态更改我的消息 ID...我不明白
--编辑2
我注意到当我从 hotmail 帐户发送邮件时就会出现问题
当我从 gmail 帐户发送邮件时,message-id 不再改变(我认为实现我自己的 Message-Id 生成方法有助于解决这个问题)
感谢回复