为 Exchange 2013 创建 RoutingAgent 传输代理

了解如何创建自定义 RoutingAgent 传输代理以用于 Exchange 2013。

适用于:Exchange Server 2013

相关代码片段和示例应用:

RoutingAgentFactoryRoutingAgent 类是传输代理的基类,这些代理设计为在 Exchange Server 2013 邮箱服务器上的传输服务上运行。 RoutingAgent 类提供下表中列出的事件,你可以在 RoutingAgent 传输代理中实现处理程序。

表 1. RoutingAgent 类事件

"事件" 说明
OnCategorizedMessage
在服务器执行内容转换后发生(如果需要)。
OnResolvedMessage
在已解决邮件的所有收件人之后,在确定路由之前发生。
OnRoutedMessage
在服务器将消息路由到下一跃点并执行内容转换(如果需要)之后发生。 服务器可能会使用比 OnSubmittedMessage 事件更多的资源来处理 OnRoutedMessage 事件中的每个消息,因为服务器在执行 OnRoutedMessage 事件处理程序中的代码之前,将执行任何必要的内容转换并确定消息路由中的下一跃点。
OnSubmittedMessage
在消息从提交队列中取出后发生。 如果 RoutingAgent 传输代理不需要内容转换、解析的收件人或路由数据,请使用 OnSubmittedMessage 事件。

创建自定义 RoutingAgent 传输代理

以下过程介绍如何创建自定义 RoutingAgent 传输代理。

创建传输代理

  1. 添加对命名空间的引用。

       using Microsoft.Exchange.Data.Mime;
       using Microsoft.Exchange.Data.Transport;
       using Microsoft.Exchange.Data.Transport.Routing;
    
    

    可以在 Exchange 服务器上找到这些命名空间。 通过添加对这些命名空间的引用,你将有权访问 RoutingAgent 成员以及 Exchange 2013:生成带宽日志记录传输代理 示例中使用的其他类。

  2. 实现 RoutingAgentFactory 类的派生类。

       public class BandwidthLoggerFactory : RoutingAgentFactory
       {
           public override RoutingAgent CreateAgent(SmtpServer server)
           {
               return new BandwidthLogger(server);
           }
       }
    
    

    此代码将实例化派生类并重写 CreateAgent 方法以创建新的自定义代理的实例。 此类中还可以重写其他方法(如 Close),以执行自定义代码。

  3. 定义代理。

       public class BandwidthLogger : RoutingAgent
       {
           // Your custom code goes here
           public BandwidthLogger(SmtpServer server)
           {
               Debug.WriteLine(logPrefix + "Agent constructor");
               this.server = server;
               this.OnSubmittedMessage += SubmittedMessage;
               this.OnRoutedMessage += RoutedMessage;
           }
       }
    
    

    定义代理类后,可以添加自定义功能。 在此示例中, OnSubmittedMessageOnRoutedMessage这两个事件重定向到自定义事件处理程序。

另请参阅