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

.net 如何通过IMAP可靠地确定原始电子邮件收件人是谁?,.net,email,imap,.net,Email,Imap,我们正在将一些应用程序整合到我正在编写的新应用程序中。每个应用程序都有一个(或多个)电子邮件地址,用于处理来自该应用程序的电子邮件。我们要做的是将每个原始电子邮件地址转发到一个新的、集中的地址,然后根据电子邮件最初发送的位置对其进行不同的处理 我们连接的服务器是Exchange2003,我正在使用IMAP(AE.Net.Email)获取电子邮件 看起来我可以浏览这些头并查找收到的头,但我不确定这是否可靠。我知道一些邮件系统专门为此添加了一个标题,但它似乎不像我们的邮件系统那样 那么,有什么东西我

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

我们连接的服务器是Exchange2003,我正在使用IMAP(AE.Net.Email)获取电子邮件

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


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

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

这就是说,随着电子邮件在系统中的传播,邮件头中会留下痕迹,这些痕迹可以为信封收件人在发送过程中的早期身份提供线索。但这里没有标准,也没有保证

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


没有一个地方可以看。你能做的最好的事情就是在你的特定场景中找到一些总是相同的东西并使用它,或者如果没有任何东西,安排用于转发邮件的脚本/函数,以便在邮件头中添加自己的面包屑痕迹。

为什么电子邮件会包含有关传输协议的任何信息?谁询问了传输协议?我的意思是如果你给kelly@fakeemail.com,并自动转发到application@automation.com我可以说它最初是寄给凯利的。这就是说,exchange似乎支持+符号的东西…我现在看到了混淆-我理解标题的意思是,您需要了解消息最初是否通过IMAP发送。我明白了。我很累,而且一开始写得很糟糕。我希望改写的更清楚。它与SMTP和POP3处于同一级别,两者都被视为电子邮件传输协议。我还看到了亚马逊SES介入时的
X-delivery-To
,以及处理谷歌应用程序组解析时的
X-BeenThere
。啊,电子邮件不是很有趣吗?