为 Exchange 2013 创建 DeliveryAgent 传输代理

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

适用于:Exchange Server 2013

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

表 1. DeliveryAgent 类事件

"事件" 说明
OnCloseConnection
在传递最后一个邮件项目并关闭连接之后发生。
OnDeliverMailItem
在邮件项准备好送达时发生。
OnOpenConnection
在打开传递代理进行邮件传递时发生。

创建自定义 DeliveryAgent 传输代理

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

创建传输代理

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

         using Microsoft.Exchange.Data.Transport;
         using Microsoft.Exchange.Data.Transport.Delivery;
    
    

    可以在 Exchange 服务器上找到这些命名空间。 通过添加对这些命名空间的引用,你将有权访问 DeliveryAgent 成员。

  2. 实现 DeliveryAgentFactory<Manager> 类的派生类。

       public class MyDeliveryAgentFactory : DeliveryAgentFactory<MyDeliveryAgentFactory.MyDeliveryAgentManager>
       {
           static MyDeliveryAgentFactory()
           {
           }
           public override DeliveryAgent CreateAgent(SmtpServer server)
           {
               return new MyDeliveryAgent(server);
           }
           public sealed class MyDeliveryAgentManager : DeliveryAgentManager
           {
               /// <summary>
               /// Gets the supported delivery protocol.
               /// </summary>
               public override string SupportedDeliveryProtocol
               {
                   get { return "MyProtocol"; }
               }
           }
       }
    
    

    此代码将实例化派生类并重写 CreateAgent 方法以创建新的自定义代理的实例。 此类中还可以重写其他方法(如 Close),以执行自定义代码。 将创建 DeliveryAgentManager 类来替代 SupportedDeliveryProtocol 属性并设置代理将使用的协议。

  3. 定义代理。

       public class MyDeliveryAgent : DeliveryAgent
       {
           public MyDeliveryAgent(SmtpServer server)
           {
               this.OnCloseConnection += CloseConnection;
               this.OnDeliverMailItem += DeliverMailItem;
               this.OnOpenConnection += OpenConnection;
           }
       }
    
    

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

另请参阅