我们有一个Exchange Trasport Agent,特别是RoutingAgent。在OnSubmittedMessage
事件中,我们需要检查MailItem
并确定它是出站还是入站。我目前正在使用SmtpServer.AcceptedDomains
属性来检查发件人电子邮件是否在接受域列表中。以下是我们如何尝试这样做的示例:
private bool IsOutbound(MailItem mailItem, AcceptedDomainCollection acceptedDomains)
{
if (acceptedDomains.Find(mailItem.FromAddress) != null)
{
return true;
}
return false;
}
我对Accepted Domains并不是非常熟悉,我想了解这是否是一个可靠的解决方案,可靠地确定电子邮件的方向?此方案还需要适用于Exchange组织设置中包含多个域的公司。请注意,如果有任何不同,我们计划支持Exchange 2010-2016。
- 编辑 -
在获得@GlenScales的帮助后,我意识到我需要稍微更新一下我的问题。
我的目标是确定电子邮件的发件人是否位于Exchange组织内部的域中。这也可以通过确定电子邮件是否在Exchange中生成来实现,我们能够在稍后阶段检查收件人,并查看它是入站还是出站。
话虽如此,我们研究了3种可能的解决方案:
最后,我们确定我们确实想要检查仅从邮箱生成的消息,然后使用#3。 #1听起来可能包含真正只是“转发”域名的域名,我们不想在我们的应用程序中考虑这些消息。
答案 0 :(得分:0)
AcceptedDomains会告诉您Exchange组织将为其设置的所有SMTP域。例如,当Exchange邮件服务器对邮件进行邮件分类时,如果邮件是接收域中的地址,则它将负责将邮件传递给该收件人(邮件中可以有多个收件人,以便指向邮件也许分叉并交付给内部收件人并发送给外部收件人。)
你做的只是告诉你发件人来自哪里,而不是消息的方向。 OnSubmittedMessage意味着您在进行任何分类之前捕获消息,如果消息是从您的组织内发送的,但如果消息同时具有内部和外部收件人,则它将具有多个目标。
干杯 格伦