1

我们正在将一些应用程序整合到我正在编写的新应用程序中。每个应用程序都有一个(或多个)用于处理电子邮件的电子邮件地址。我们想做的是将每个原始电子邮件地址转发到一个新的、集中的地址,然后根据最初发送的位置以不同的方式处理电子邮件。

我们连接的服务器是 Exchange 2003,我使用 IMAP (AE.Net.Email) 来获取电子邮件。

似乎我可以浏览标题并查找 Received 标题,但我不确定这是否可靠。我知道一些邮件系统专门为此添加了一个标题,但它似乎不像我们的那样。

那么有什么我可以通过 IMAP 检查但我没有看到的东西吗?我们可以在 Exchange 中做些什么来确保添加标头吗?或者将电子邮件发送到不同的文件夹?有没有办法做一个类似于GMail的用户名+关键字@host.com?

4

1 回答 1

2

一般情况下,您无法判断电子邮件何时被重定向、别名、转发或在邮箱之间移动。在 SMTP 世界中,将电子邮件向前移动到其目的地的每个操作或多或少等同于修改或重写 SMTP 信封收件人地址。此类操作可以是从电子邮件别名到通过邮件列表传递到用户配置的转发规则的任何操作。一些 MTA 的架构甚至使这一事实非常明确:例如,Sendmail 配置文件中最重要的部分不过是一组基于模式匹配和替换的规则,这些规则指定电子邮件的信封收件人如何以文本方式迭代重写。

话虽如此,当电子邮件通过系统时,可能会在标题中留下痕迹,从而为信封收件人在此过程中的早期状态提供线索。但是这里没有标准,也没有保证。

如您所知, MTA 通常将一些信息放在Received可以派上用场的标头中,但并不总是采用可预测的格式。一些本地投递代理(链中的最后一步,将电子邮件投递到实际邮箱中)Delivered-To在将邮件放入邮箱之前将邮件头附加到邮件中,但这取决于投递代理。邮件列表会添加这样的标题List-Id,说明在将邮件重新发送给各个订阅者之前,电子邮件被发送到了哪个邮件列表。

没有一个地方可以看。您能做的最好的事情是找到在您的特定场景中始终相同的东西并使用它,或者如果没有任何东西,请安排您用来转发消息的任何脚本/功能以添加自己的面包屑踪迹在标题中。

于 2012-12-03T16:24:09.197 回答