发送电子邮件时,发送/接收协议中是否有任何内容可以保证或应该保证任何接收电子邮件的人将按照与发件人相同的顺序在To
和字段中看到收件人列表Cc
输入它们?这是一个非常简单和基本的问题,真的,但似乎不可能在谷歌上找到答案,它只想教我关于你应该CC你的老板的顺序的工作场所礼仪。
这个老问题提到,同一封电子邮件可以在不同的客户端上以不同的顺序显示收件人,这可能表明各种电子邮件协议中没有任何内容可以保证在任何地方都保持原始顺序(因此,抄送老板的顺序无关紧要,因为无论如何您都无法控制他们看到的顺序)——或者它可能只是电子邮件客户端中的软件错误。
那么实际的协议和标准是怎么说的(请用对人类友好的术语)?邮件客户是否可以按照他们喜欢的任何顺序自由地呈现收件人(以及抄送收件人),或者他们是否应该按照发件人输入的顺序作为法律并坚持这一点?
更新
正如 Tonny 和 R.. Github 在他们的回答中指出的那样,实际的 SMTP 协议当然就是这样——一种传输信息的协议。因此,它并不真正关心它传输的数据内容,就像 HTTP 不关心它传输的 HTML 内容一样。因此,实际协议本身是否能保证任何事情的答案显然是否定的。
在 HTTP 和 HTML 的并行(ish)情况下,整个传输还有另一层,与 HTTP 协议本身分开:W3C 标准规定了用户代理(= 浏览器)必须如何向用户呈现实际内容;不符合这些的 UA 是不合规的。但是,即使在这些标准中,有些事情完全由 UA 决定,并且不能保证以特定方式呈现特定事物。
当提到上面的“协议”时,我的意图是也包括这样的标准——任何管理发件人在他们的 MUA 中点击“发送”和收件人在他们的 MUA 中看到电子邮件之间发生的事情。
任何接触过 HTML 电子邮件的人都知道,对于电子邮件正文内容显然不存在这样的标准(或者即使存在,它们也会被 MUA 完全蔑视)。但收件人不是消息实际正文的一部分,因此他们向用户的呈现很可能受到完全不同的标准的约束。
因此,除了实际的 SMTP 协议本身之外,我真正想知道的是,是否有任何标准/规定来管理 MUA 如何处理收件人并将其呈现给用户。那是:
- 在生成标头和启动 SMTP 连接之前,发送 MUA 是否可以自由地重新排序 UI 中的
To:
和字段中显示的内容?CC:
- 接收 MUA 是否可以随意生成 UI 的 (CC-) 收件人列表,并以任何它想要的方式对其进行排序?
- 或者是否有某种“法律”规定 MUA不能自由地这样做以保持合规性?
是的,除非参与交付的一方在做可疑的事情。
邮件中的头域的原始内容来自发件人的MUA(邮件用户代理,即邮件软件)。处理邮件的中间系统在技术上可以修改它们,但如果不违反正式的协议标准,那将违反预期,而且如果涉及 DKIM,则在外发站点的邮件系统与标头签署后的任何阶段都这样做DKIM 密钥会使签名不匹配。通常,处理您的邮件转发的中介系统会将标头(
Received:
、DKIM 签名、垃圾邮件可能性分数等)添加到邮件中,而不是修改现有的。请注意,电子邮件消息中的
To:
和标头仅供参考;Cc:
它们不是邮件如何传递给正确方的机制的一部分。相反,当您的 MUA 通过 SMTP 将邮件提交到您的邮件提供商的提交端口时,这些RCPT TO
命令会指定它应该被传递到的地址。MUA 通常从标头中派生这些,但不是必须的(在 的情况下Bcc:
,派生它们的标头在发送之前已被剥离)。为了解决问题的更新:我不知道有任何“法律”来规范 MUA 必须做什么,即使有,许多流行的现有法律在多大程度上违反了正常的期望/礼仪(例如,隐藏电子邮件地址并且只显示未经身份验证的名称、严重重排的文本等)让我说你不能相信他们无论如何都会遵守这样的“法律”。如果您想知道特定发件人的 MUA 对收件人的排序是否与发件人编写/选择它们的方式不同,或者特定收件人的 MUA 是否可能与他们在消息中的顺序不同,您真的需要知道什么特定的他们正在使用的软件并检查该软件的行为。
对于它的价值,我不记得曾经见过这样的重新排序,但我只使用/观察了所有 MUA 中的极少数,所以有可能有些重新排序的东西。
我通过 SMTP 协议规范已经有几年了,但据我所知,其中没有任何内容规定维护该顺序。
据我所知,SMTP 协议仅规定了消息格式以及该格式中的必填字段和可选字段。它确实为发送必填字段的顺序提供了一些指导,但对于具有多个值的字段(如收件人),它只说明了这些字段应如何格式化。它并不是说该字段中多个值的顺序很重要或应该保留。
并且任何接收和转发电子邮件的邮件服务器/中继都可以在以任何它喜欢的格式发送之前免费临时存储该电子邮件,并在进一步传输时根据需要重建 SMTP 消息。
如果它对可能更改顺序的收件人列表进行任何排序。发送和接收邮件客户端也可以处理这个问题。
发送客户端可以在创建 SMTP 消息之前重新排序您输入的内容,接收邮件客户端可以在显示给您之前重新安排接收。
发送/接收协议与所有这些无关。
它只关心格式正确的 SMTP 消息。
协议的工作不是关心它上面的应用层对消息做了什么。
没有说明 MUA必须保持顺序的规范。相反,有人建议 MUA应按域名排序以提高投递效率,类似于邮局在按地址排序之前先按邮政编码排序邮件。当然,出于效率目的,SMTP 的智能实现可能无论如何都会这样做,但早期的建议是让 MUA 这样做以“帮助”服务器提高效率。
没有关于 MUA 外观的规范。当然,凭借数十年的经验,大多数 MUA 在这一点上大多是同质的,因此事实上的标准是做其他人似乎在做的事情,即不对 To 和 CC 字段进行排序。当然,由于没有规范,所以 MUA 没有理由不能做其他事情,无论是默认情况下,还是作为切换选项,例如按域、本地名称、两者或显示名称排序,等等
密件抄送不是传输电子邮件的一部分,因此收件人看不到其顺序。
To: 和 CC: 是电子邮件标头,因此通常不可变,因此对于电子邮件的发件人和所有收件人,它们将具有相同的内容(包括相同的地址、相同的顺序和相同的名称)。
SMTP 本身处理与 CC: 和 To: 完全分离的收件人列表,但大多数邮件用户代理使列表成为 To: CC: 和 BCC: 的并集(后者被 MUA 剥离。)
MUA 可以以他们认为合适的任何方式自由隐藏、篡改或混淆这些信息。