Answers:
在电子邮件标题服务于不同的目的,而不是信封发件人和收件人的地址(这确实不是隐藏本身,他们只是没有消息的一部分)。
信封发件人和收件人(您从未在邮件中看到过)是SMTP协议的一部分,并指定传递说明,即邮件服务器应将邮件传递到哪个邮箱,或者在什么情况下将其返回有些失败。两个地址都不需要与消息的语义内容有任何关系。在RFC 5321第4.1.1.2和4.1.1.3节中详细说明了这些内容。
从逻辑上讲,这些类似于打印在一封邮件信封上的地址。
消息本身中出现的始发者和目标地址指示语义,而不是显式的传递指令。这些在RFC 5322第3.6.3节和RFC 6854第2.1 节中作了详细说明(这使RFC 5322第3.6.2节作废)。
简而言之,消息中的“发件人:”指示撰写该消息的人的邮箱,“发件人”:指示代表其他人发送消息的实体,“收件人:”和“抄送”:指示预期的收件人邮箱。RFC还定义了您可能感兴趣的其他标头字段。
从逻辑上讲,这些地址类似于邮政邮件中对应信件上打印的地址。
通常,信封发件人和收件人与发件人:和收件人:地址相同。但是对于他们来说,通常根本没有对应关系,例如在邮件列表中。
您会看到差异的最常见情况是在发送具有多个收件人的电子邮件时。
假设您要发送电子邮件至:
当您的邮件客户端将电子邮件发送到邮件服务器时,信封和标头上的所有三个地址都将重复。接下来,您的邮件服务器将查找MX记录example.com
并example.net
继续发送。
您的邮件服务器现在将与每个接收服务器建立两个单独的SMTP连接,以进一步发送电子邮件。
与MX通讯时,example.com
所有三个接收器仍将保留在To
标题中,但只有一个信封接收器。
与MX通讯时,example.net
所有三个接收器仍将保留在To
标题中,但只有两个信封接收器。
类似于上述想象,您打印了一封信的三个副本,其中三个收件人写在纸上。然后,您将把这三张纸放在三个单独的信封中,并在每个信封上只写一个地址。
在其他情况下,它也会有所作为,例如使用时bcc
和转发电子邮件时。
作为一个稍作设计的类比,可以想象您正在与某个实体交换字母。该实体不知道您要创建每个信件的影印本,然后将其放在信封中寄给律师。