Procmail处理转发的电子邮件

时间:2013-03-27 21:55:14

标签: procmail

我想处理procmail收到的转发电子邮件,以抓取转发(子)电子邮件的主题和收件人。

例如:

  • UserA收到来自UserB的电子邮件
  • UserA将该电子邮件转发至电子邮件服务器
  • 电子邮件服务器接收电子邮件并提取UserB的电子邮件地址

是否有执行此任务的方法或配方?或者我必须通过主电子邮件的正文进行正则表达式?

修改

根据要求,我将提供边界条件。 “UserA群组”的电子邮件客户端是Gmail和Outlook。所有用户都用英语发送。 'UserB'是我控制下的自动代理。

我的一个服务器(“用户B”)向我的用户(“UserA”)发送自动电子邮件,这些用户应该将电子邮件转发到第二台服务器进行处理(以确认他们收到了自动电子邮件)。

然后,我假设没有一致的标题用于转发,我需要通过电子邮件正确的方式来提取我需要的数据。

1 个答案:

答案 0 :(得分:1)

(这不是一个正确的答案,但我不能在评论中使用格式,所以这里就是。)

取决于"前锋"的含义。如果您的意思是"使用'转发'理智的电子邮件客户端中的按钮"它可以作为附件出现(可能是内容传输编码,需要对其进行解码才能访问它)或原始消息的内嵌副本作为文本正文;或者如果你的意思是"使用'转发'一个破碎的电子邮件客户端中的按钮,例如来自 Mordor Redmond"有许多可能的额外并发症。从技术上讲,一些客户也可能会转发"通过添加" Resent-to:"标题,否则只是逐字重新发送原始消息。或者在某些现代客户端中,您可以将消息拖到新空消息的合成窗格中,并使其显示为新消息的附件,可能是用户控制包含消息的内容类型和编码和附件。

假设您最终得到以下内容......

From: UserA <usera@such.example.com>
To: server@example.net
Subject: VB: Hi

Hey, here is a message I received.

-- User A

---- Ursprungligt meddelande ----
Från: UserB [mailto:userb@elsewhere.example.org]
Till: UserA
Ämne: Hi
Datum: perjantai 13. lokakuuta 2012 23:45

Here is the original message

-- User B

....表示确实不适合自动处理。您可以提出启发式方法,例如识别&#34;原始消息&#34;分隔符和第一个(可能是本地化和残缺的)&#34;到:&#34;分隔符后面的字段,可能要求所有消息来自具有特定区域设置的特定客户端的特定版本,但在一般情况下,这不能可靠地解决。

(为了好玩,我构建了一个使用芬兰语系统设置运行的瑞典语本地化的示例;因此客户端的标签是瑞典语,但系统的日期是芬兰语。)

如果您可以编辑您的问题以包含转发邮件的示例以及某些边界条件(它始终来自同一用户,则她使用的客户端软件的版本和本地化不会更改等,或许)我们可以尝试从那里接受它。