1

我们有一个 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;
}

我对接受域不是非常熟悉,我想了解这是否是可靠地确定电子邮件方向的可行解决方案?此方案还需要适用于在其 Exchange 组织设置中包含多个域的公司。请注意,如果有任何不同,我们计划支持 Exchange 2010-2016。

- 编辑 -

从@GlenScales 获得一些帮助后,我意识到我需要稍微更新一下我的问题。

我的目标是确定电子邮件的发件人是否在 Exchange 组织内部的域中。这也可以通过确定电子邮件是否在 Exchange 中生成来实现,我们能够在稍后阶段检查收件人,看看它是入站还是出站。

话虽如此,我们研究了 3 种可能的解决方案:

  1. 根据接受域列表检查发件人域
  2. 使用地址簿检查发件人是否是内部的
  3. 检查 InboundDeliveryMethod 属性并查看它是否是从邮箱创建的

最后,我们决定我们真的想检查仅从邮箱生成的消息并使用#3。#1 听起来它可能包含实际上只是“转发”域的域,我们不想在我们的应用程序中考虑这些消息。

4

1 回答 1

0

AcceptedDomains 告诉您 Exchange 组织将挖掘的所有 SMTP 域。例如,当 Exchange 传输服务器对邮件执行邮件分类时,如果邮件发往接受域内的地址,它将负责将该邮件传递给该收件人(邮件中可以有多个收件人,以便将邮件指向可能会分叉并交付给内部收件人,然后再发送给外部收件人)。

你所做的只是告诉你发送者来自哪里,而不是消息的方向。OnSubmittedMessage 意味着您在进行任何分类之前捕获消息,如果它是从您的组织内部发送的消息,但如果该消息同时具有内部和外部收件人,则某些副本将具有多个目的地。

https://social.msdn.microsoft.com/Forums/en-US/9387e62a-76d7-4340-b9cc-f87ffcfab8b1/how-to-detect-the-message-source-in-an-中还有一些其他选项exchange-server-2013-transport-agent-for-getting-the-sending?forum=exchangesvrdevelopment我建议你看看

干杯格伦

于 2016-04-28T04:24:25.653 回答