【发布时间】:2017-05-06 21:35:18
【问题描述】:
我在 Go 中使用 net/mail 库,一切都很好,但是我想传递原始电子邮件并保持标题的顺序。这很重要,因为在每个邮件服务器上传递消息的邮件服务器都会按顺序添加它们的标题。没有顺序,很难知道谁收到了什么,何时以及每个服务器添加了什么标头。
net/mail 库 stores the headers in a map,根据定义,它没有顺序的概念。似乎是一个奇怪的选择,因为标题顺序仅基于电子邮件中的顺序,但事实就是如此。
有人对我如何保留标题的读取顺序有任何建议吗?
谢谢
【问题讨论】:
-
它将它存储在
map[string][]string(textproto.MIMEHeader) 中。键是标头名称,值是该标头所有出现的切片,应该是按顺序。我不知道你为什么认为他们没有被订购?在什么情况下会失败? -
因为我无法解析邮件标头并将它们打印出来并获得原始订单,但我想我当时完全错过了一些东西。我解析了一封邮件,然后从
net/mail对象重新生成了邮件,并担心Received和Received-SPF会失去顺序,因为地图没有排序,但你说Received[0]与@987654330 匹配@。正如在电子邮件中一样,当每个服务器添加它们时,它们将彼此相邻,因此当从地图重新创建标题时,我需要以某种方式将各自的标题对从数组位置放在一起?
标签: email go email-headers