![](/img/trans.png)
[英]Exchange Routing agent - check if email address is a exchange shared mailbox using C#
[英]Exchange Routing Agent Detect Email Direction
我们有一个Exchange Trasport代理,它专门是一个RoutingAgent。 在OnSubmittedMessage
事件中,我们需要检查MailItem
并确定它是出站还是入站。 我目前正在使用SmtpServer.AcceptedDomains
属性检查发件人电子邮件是否在“接受的域”列表中。 这是我们尝试执行此操作的示例:
private bool IsOutbound(MailItem mailItem, AcceptedDomainCollection acceptedDomains)
{
if (acceptedDomains.Find(mailItem.FromAddress) != null)
{
return true;
}
return false;
}
我对“接受域”不是很熟悉,我试图了解这是否是可靠确定电子邮件方向的可行解决方案? 此方案还需要适用于Exchange组织设置中包含多个域的公司。 请注意,如果有任何不同,我们计划支持Exchange 2010-2016。
- 编辑 -
从@GlenScales获得一些帮助后,我意识到我需要稍微更新一下我的问题。
我的目标是确定电子邮件的发件人是否在Exchange组织内部的域中。 这也可以通过确定电子邮件是否是在Exchange中生成的来实现的,我们可以在以后的阶段很好地检查收件人并查看它是入站还是出站。
话虽如此,我们研究了3种可能的解决方案:
最后,我们决定我们真的想检查仅从邮箱生成并与#3一起发送的邮件。 #1听起来似乎可能包含实际上只是“转发”域的域,并且我们不想在应用程序中考虑这些消息。
AcceptedDomains会告诉您Exchange组织将要研究的所有SMTP域。 例如,如果Exchange传输服务器对邮件进行邮件分类(如果邮件是到接受域内的地址),它将负责将该邮件传递给该收件人(邮件中可以有多个收件人,以便指向该邮件也许分叉并传递给内部收件人,然后发送给外部收件人)。
您所做的只是告诉您发件人在哪里,而实际上并不是消息的方向。 OnSubmittedMessage意味着您是在组织内部发送邮件的情况下,在进行任何分类之前捕获邮件的,但是如果该邮件同时具有内部和外部收件人,则该邮件将具有多个目的地。
干杯格伦
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.