Exchange 2013 用 SmtpReceiveAgent トランスポート エージェントを作成する

Exchange 2013 で使用するカスタム SmtpReceiveAgent トランスポート エージェントを作成する方法について説明します。

製品: Exchange Server 2013

関連するコード スニペットとサンプル アプリ:

SmtpReceiveAgentFactory クラスと SmtpReceiveAgent クラスを使用すると、クライアント アクセス サーバー上のフロント エンド トランスポート サービスまたはメールボックス サーバー上のトランスポート サービスの動作を拡張できます。 これらのクラスを使用して、組織に到着したメッセージに応答するように設計されたトランスポート エージェントを実装できます。

SmtpReceiveAgentFactory クラスと SmtpReceiveAgent クラスには、次の表に示すイベントが含まれています。

表 1. SmtpReceiveAgent クラスのイベント

イベント 説明
OnAuthCommand
どの種類の認証方法が使用されたかによって、メッセージ配信の試行を拒否または承認するエージェントなど、SMTP AUTH コマンドでのみ得られる情報を必要とするエージェントで使用します。
OnConnect
リモート SMTP サーバーのアドレスまたはドメインに基づいてアクションを実行するエージェントなど、フロント エンド トランスポート サービスへの SMTP による接続が開いているときにのみ得られる情報を必要とするエージェントで使用します。
OnDataCommand
このイベントは、SMTP DATA コマンドで得られる情報を必要とするエージェントで使用します。
OnDisconnect
時間の計算を実行するために、切断時に得られる現在の時刻と日付などの情報を必要とするエージェントで使用します。
OnEhloCommand
SMTP EHLO コマンドで得られる情報を必要とするエージェントで使用します。たとえば、EHLO コマンドで得られる ID に基づいて、エージェントによってメッセージを承認または拒否する場合に使用します。
OnEndOfAuthentication
リモート サーバーが認証プロセスを完了したときに得られる情報を必要とするエージェントで使用します。たとえば、リモートの SMTP サーバーやクライアントから得られる認証情報に基づいてメッセージにアクションを実行するエージェントで使用します。
OnEndOfData
メッセージから得られるデータに基づいてアクションを実行する必要のあるエージェントで使用します。 このイベントは、フロント エンド トランスポート サービスでは発生しません。 このイベントをトランスポート エージェントで使用する必要がある場合は、そのエージェントをメールボックス サーバーにインストールする必要があります。
OnEndOfHeaders
送信したメッセージのヘッダーから得られる情報に基づいてアクションを実行する必要のあるエージェントで使用します。

カスタム SmtpReceiveAgent トランスポート エージェントの作成

次に示す手順では、カスタムの SmtpReceiveAgent トランスポート エージェントを作成する方法について説明しています。

トランスポート エージェントを作成するには

  1. 名前空間に参照を追加します。

       using Microsoft.Exchange.Data.Transport;
       using Microsoft.Exchange.Data.Transport.Smtp;
       using Microsoft.Exchange.Data.Transport.Email;
       using Microsoft.Exchange.Data.TextConverters;
    
    

    これらの名前空間は、Exchange 2013 サーバーにあります。 これらの名前空間への参照を追加すると、 SmtpReceiveAgent メンバーと 、Exchange 2013 で使用される他のクラスへのアクセス権が付与されます。本文変換トランスポート エージェントの構築 サンプル。

  2. SmtpReceiveAgentFactory クラスの派生クラスを実装します。

       public class BodyConversionFactory : SmtpReceiveAgentFactory
       {
           /// <summary>
           /// Create a new BodyConversion
           /// </summary>
           /// <param name="server">Exchange server</param>
           /// <returns>A new BodyConversion</returns>
           public override SmtpReceiveAgent CreateAgent(SmtpServer server)
           {
               return new BodyConversion();
           }
       }
    
    

    このコードでは、派生クラスのインスタンスを作成し、CreateAgent メソッドをオーバーライドして、新しいカスタム エージェントのインスタンスを作成するようにします。

  3. エージェントを定義します。

      public class BodyConversion : SmtpReceiveAgent
       {
           // Your custom code goes here
           /// <summary>
           /// The constructor registers an end of data event handler.
           /// </summary>
           public BodyConversion()
           {
               Debug.WriteLine("[BodyConversion] Agent constructor");
               this.OnEndOfData += new EndOfDataEventHandler(this.OnEndOfDataHandler);
           }
       }
    
    

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

関連項目