-1

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

例如:

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

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

编辑:

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

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

然后,我假设没有一致的转发标头,并且我需要通过电子邮件正则表达式来提取我需要的数据。

4

1 回答 1

1

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

取决于您所说的“前锋”是什么意思。如果您的意思是“在健全的电子邮件客户端中使用‘转发’按钮”,它可能会以附件的形式出现(可能带有内容传输编码,需要对其进行解码才能访问它)或原始消息作为文本主体;或者如果您的意思是“在损坏的电子邮件客户端中使用‘转发’按钮,例如来自魔多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

....表示确实不适合自动处理。您可以提出启发式方法,例如识别“原始消息”分隔符和分隔符后的第一个(可能是本地化和残缺的)“to:”字段,也许通过要求所有消息来自具有特定客户端的特定版本特定的语言环境设置,但在一般情况下,这无法可靠地解决。

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

如果您可以编辑您的问题以包含转发消息的示例以及一些边界条件(它始终来自同一个用户,她使用的客户端软件的版本和本地化可能不会改变等),我们可以尝试采取从那里开始。

于 2013-04-02T13:01:23.650 回答