转发电子邮件检测

时间:2011-01-19 12:35:33

标签: email

有没有办法检测(使用RFC 2822标头)电子邮件是转发的电子邮件?

2 个答案:

答案 0 :(得分:18)

有两件事通常被称为“转发”。

当您将自动帐户级转发设置为其他电子邮件地址时,您的邮件系统通常会引入额外的标头,以使其能够检测和中断邮件循环。不幸的是,这个标题的名称从未标准化。 Some use Delivered-To, some use X-Loop,有些使用X-Original-To,有些人使用其邮件软件专有的X-header。但是没有单个标题字段可以显示所有情况。

通过单击邮件程序中的“转发”按钮手动转发邮件并输入收件人电子邮件地址和一些描述性文本时,会生成带有新Message-ID标题的新邮件。此邮件的标题集与正常回复无法区分 - In-Reply-ToReferences的设置方式完全相同。唯一的区别是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>"约定外,没有可用于检测转发的标题字段。