【发布时间】:2011-11-28 15:13:13
【问题描述】:
幸运的是,我试图找到一个解决方案,所以我决定在这里发布它。
问题是,当我使用 javaMail 发送消息时,它会自动生成一个 Message-Id(我存储到我的数据库中以识别对该消息的回复),但由于某种原因它正在被 smpt 服务器更改当消息发送时,我将无法跟踪与此消息相关的任何内容。
例如
我首先通过 gmail 向一个使用我的邮件客户端同步的帐户发送一条消息,然后我使用我的消息客户端检查该消息,一切正常,Message-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 中的 smtpsend 演示进行了测试(我实现了 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
在发送消息时的 smtpsend 输出之间,生成了 Message-Id
<60eea6ae-2657-41bd-b475-3a57eff885ac@mydomain.com>
但是,当我在 anotheraccount@gmail.com 上查看此消息时,Message-Id 不同
<BLU0-SMTP109215E6BB99B93FC106B1E88B00@phx.gbl>
为什么它会即时更改我的 Message-Id...我不明白
--编辑2
我注意到问题正在发生,就在我从 hotmail 帐户发送邮件时 当我从 gmail 帐户发送邮件时,message-id 不再改变(我认为实现我自己的 Message-Id 生成方法有助于解决这个问题)
感谢回复
【问题讨论】:
-
我现在在使用 C# 和 OpenPop 的 Outlook/hotmail 中看到了同样的情况。 Message-ID 被至少部分基于发送它的 SMTP 服务器的 ID 覆盖。例如...
Message-ID: <BLU0-SMTP238B4936E5D12FDCC43512755CE0@phx.gbl> Received: from myBox ([111.111.111.111]) by BLU0-SMTP238.phx.gbl over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675);两者都是BLU0-SMTP238。 /sigh 我最终在电子邮件中添加了另一个标题,其中包含我已知的用于 hotmail/outlook 的唯一字符串。 -
我从微软电子邮件帐户发送时遇到了同样的问题。你有没有解决过你的问题?
标签: message jakarta-mail sendmail