繁体   English   中英

如何通过 IMAP 可靠地确定原始电子邮件收件人是谁?

[英]How can I reliably determine, via IMAP, who the original email recipient was?

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

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

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

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

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

话虽如此,当电子邮件通过系统时,可以在标头中留下痕迹,这些痕迹提供了信封收件人在流程早期的信息。 但是这里没有标准,也没有保证。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM