有没有办法检测(使用RFC 2822标头)电子邮件是转发的电子邮件?
答案 0 :(得分:18)
有两件事通常被称为“转发”。
当您将自动帐户级转发设置为其他电子邮件地址时,您的邮件系统通常会引入额外的标头,以使其能够检测和中断邮件循环。不幸的是,这个标题的名称从未标准化。 Some use Delivered-To
, some use X-Loop
,有些使用X-Original-To
,有些人使用其邮件软件专有的X-header。但是没有单个标题字段可以显示所有情况。
通过单击邮件程序中的“转发”按钮手动转发邮件并输入收件人电子邮件地址和一些描述性文本时,会生成带有新Message-ID
标题的新邮件。此邮件的标题集与正常回复无法区分 - In-Reply-To
和References
的设置方式完全相同。唯一的区别是Subject
标题通常以“Fwd:
”开头或以“(fwd)
”结尾。 (“通常”,因为有些客户将其格式化为“[Fwd: <original subject>]
”,并在新主题周围加上方括号,有些客户端将前缀Fwd:
本地化为他们自己的语言,有些用户手动编辑{{1}在点击“发送”之前。)
所以有很好的提示可以转发邮件,但没有硬性规则。
答案 1 :(得分:3)
读取spec,CTRL + F表示“转发”,会显示以下标题字段:
resent-date = "Resent-Date:" date-time CRLF
resent-from = "Resent-From:" mailbox-list CRLF
resent-sender = "Resent-Sender:" mailbox CRLF
resent-to = "Resent-To:" address-list CRLF
resent-cc = "Resent-Cc:" address-list CRLF
resent-bcc = "Resent-Bcc:" (address-list / [CFWS]) CRLF
resent-msg-id = "Resent-Message-ID:" msg-id CRLF
我不确定主要的邮件软件是否使用这些。
修改强>
稍微快速阅读规范,还有这个说明:
注意:将消息重新引入传输系统并使用 重新发送字段是与“转发”不同的操作。 “转发”有两个含义:一种转发感是邮件 用户可以告诉读取程序转发消息的副本 对另一个人,使转发的消息成为新的主体 信息。这种意义上的转发消息似乎没有 来自原始发件人,但是来自的是一个全新的消息 消息的转发器。另一方面,转发也是 用来表示邮件传输程序收到邮件时的情况 将其转发到不同的目的地以进行最终交付。愤恨 标题字段不适用于任何一种类型 转发。
没有其他“转发”通知,因此除了subject = "Fwd: <msg>"
约定外,没有可用于检测转发的标题字段。