Создание транспортного агента SmtpReceiveAgent для Exchange 2013 г.

Узнайте, как создать настраиваемый транспортный агент SmtpReceiveAgent для использования с Exchange 2013 г.

Применяется к: Exchange Server 2013 г.

Связанные фрагменты кода и примеры приложений:

Классы SmtpReceiveAgentFactory и SmtpReceiveAgent позволяют расширить поведение передней транспортной службы на сервере клиентского доступа или транспортной службе на сервере почтовых ящиков. Эти классы можно использовать для реализации транспортных агентов, предназначенных для реагирования на сообщения при их ввозе в организацию.

Классы SmtpReceiveAgentFactory и SmtpReceiveAgent включают события, перечисленные в следующей таблице.

Таблица 1. События класса SmtpReceiveAgent

Event Описание
OnAuthCommand
Используйте, когда вашему агенту требуются сведения, предоставляемые только в команде SMTP AUTH, например агент, который принимает или отклоняет попытки доставки сообщения в зависимости от типа используемого метода проверки подлинности.
OnConnect
Используйте, когда агенту требуются сведения, предоставляемые только в том случае, если подключение через SMTP открывается к службе переднего транспорта, например агенту, который выполняет действие на основе адреса или домена удаленного сервера SMTP.
OnDataCommand
Используйте это событие, если вашему агенту требуются сведения, предоставляемые в команде SMTP DATA.
OnDisconnect
Используйте, когда агенту требуется информация, доступная во время отключения, например текущая дата и время, для выполнения расчетов времени.
OnEhloCommand
Использование, когда агенту требуется информация, представленная в команде SMTP EHLO; например, если агент принимает или отклоняет сообщения на основе удостоверения, предоставленного в команде EHLO.
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 перенаправляется на настраиваемый обработник событий.

См. также