2013 年の DeliveryAgent トランスポート エージェントExchangeする

2013 で使用するカスタム DeliveryAgent トランスポート エージェントを作成するExchangeします。

製品: Exchange Server 2013

DeliveryAgentFactory <Manager> クラスとDeliveryAgentクラスは、2013 メールボックス サーバー上のトランスポート サービスで実行するように設計されたトランスポート エージェントの基本クラスExchange Serverです。 次の表に示す 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;
           }
       }
    
    

    独自のエージェント クラスを定義すると、カスタムの機能を追加できるようになります。 この例では、OnCloseConnection、OnDeliverMailItem、OnOpenConnectionの 3 つのイベントがカスタム イベント ハンドラーにリダイレクトされます。

関連項目