JavaMail - Header 订单

JavaMail - Header order

我遇到了一些问题,因为我的邮件 header 出了问题。是否可以保留我已添加物品的订单?我希望我所有的自定义 header 信息都在 header "Return-Path" 之前。

我已经阅读了有关方法 addHeader(key, value) 和类似反向操作的内容,但我不知道该怎么做。

这是它的生成方式:

Return-Path: 00093b6a.000127712516@urx.com
From: =?UTF-8?B?RGVzZW52b2x2aW1lbnRvIFRlc3Rlcw==?= <bla@bla.net>
Reply-To: Test Dev <bla@bla.net>
To: bla.bla@bla.net
Message-ID: <342723268.1.1430361334441.JavaMail.bla.bla@uhew>
Subject: =?UTF-8?B?VGVzdGUgQ29uZWN0IENhcg==?=
MIME-Version: 1.0
Content-Type: multipart/mixed; 
    boundary="----=_Part_0_1634925367.1430361334427"
X-Receiver: bla.bla@bla.net
X-RPTags: 
List-Unsubscribe: <mailto:None?subject=unsubscribe:00093b6a.000127712516>
X-Envid: 00605034.000127712516
X-MsgID: 00093b6a.000127712516
x-virtual-mta: NGMistoURX
X-rpcampaign: NGZDesenv605034
X-Sender: 00093b6a.000127712516@urx.com
X-UmailPersonalization: 2388627
X-Mailer: Generator V3

这里是我希望如何生成我的信息:

X-Receiver: bla.bla@bla.net
X-RPTags: 
List-Unsubscribe: <mailto:None?subject=unsubscribe:00093b6a.000127712516>
X-Envid: 00605034.000127712516
X-MsgID: 00093b6a.000127712516
x-virtual-mta: NGMistoURX
X-rpcampaign: NGZDesenv605034
X-Sender: 00093b6a.000127712516@urx.com
X-UmailPersonalization: 2388627
X-Mailer: Generator V3
Return-Path: 00093b6a.000127712516@urx.com
From: =?UTF-8?B?RGVzZW52b2x2aW1lbnRvIFRlc3Rlcw==?= <bla@bla.net>
Reply-To: Test Dev <bla@bla.net>
To: bla.bla@bla.net
Message-ID: <342723268.1.1430361334441.JavaMail.bla.bla@uhew>
Subject: =?UTF-8?B?VGVzdGUgQ29uZWN0IENhcg==?=
MIME-Version: 1.0
Content-Type: multipart/mixed; 
    boundary="----=_Part_0_1634925367.1430361334427"

这就是我添加 header 信息的方式

headerData.foreach(header => message.addHeader(header._1, header._2) )

有想法吗?

提前致谢

正如其他人所说,header顺序真的不应该重要。

如果您需要将所有 header 以特定顺序放在消息的开头,最简单的方法是子类化 MimeMessage 并覆盖 writeTo 方法以写出您的 header调用 super.writeTo 之前的 s。您可能希望将 header 保存在单独的列表或 InternetHeaders object.