Compartir a través de


Creación de un agente de transporte SmtpReceiveAgent para Exchange 2013

Obtenga información sobre cómo crear un agente de transporte SmtpReceiveAgent personalizado para usarlo con Exchange 2013.

Se aplica a: Exchange Server 2013

Fragmentos de código relacionados y aplicaciones de ejemplo:

Las clases SmtpReceiveAgentFactory y SmtpReceiveAgent permiten ampliar el comportamiento del servicio de transporte front-end en un servidor de acceso de cliente o el servicio de transporte en un servidor de buzones. Puede usar estas clases para implementar agentes de transporte diseñados para responder a los mensajes a medida que entran en su organización.

Las clases SmtpReceiveAgentFactory y SmtpReceiveAgent incluyen los eventos enumerados en la tabla siguiente.

Tabla 1. Eventos de clase SmtpReceiveAgent

Evento Descripción
OnAuthCommand
Use cuando el agente requiera información que se proporcione solo en el comando SMTP AUTH , como un agente que acepte o rechace intentos de entregar un mensaje en función del tipo de método de autenticación usado.
OnConnect
Se usa cuando el agente requiere información que se proporciona solo cuando se abre una conexión a través de SMTP al servicio de transporte front-end, como un agente que realiza una acción basada en la dirección o el dominio del servidor SMTP remoto.
OnDataCommand
Use este evento cuando el agente requiera información proporcionada en el comando SMTP DATA .
OnDisconnect
Use cuando el agente requiera información disponible en el momento de la desconexión, como la fecha y hora actuales, para realizar cálculos de hora.
OnEhloCommand
Use cuando el agente requiera información proporcionada en el comando SMTP EHLO ; por ejemplo, si el agente acepta o rechaza mensajes basados en la identidad proporcionada en el comando EHLO .
OnEndOfAuthentication
Use cuando el agente requiera información que esté disponible después de que el servidor remoto complete el proceso de autenticación; por ejemplo, para un agente que realiza una acción en un mensaje en función de la información de autenticación proporcionada por el servidor SMTP remoto o el cliente.
OnEndOfData
Úselo cuando el agente debe realizar una acción basada en los datos que están disponibles en el mensaje. Este evento no se desencadenará en el servicio de transporte front-end. Si el agente de transporte tiene que usar este evento, debe instalarlo en un servidor de buzones de correo.
OnEndOfHeaders
Use cuando el agente debe realizar una acción basada en la información disponible en los encabezados del mensaje enviado.

Creación de un agente de transporte smtpReceiveAgent personalizado

En el procedimiento siguiente se describe cómo crear un agente de transporte SmtpReceiveAgent personalizado.

Para crear el agente de transporte

  1. Agregue referencias a los espacios de nombres.

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

    Puede encontrar estos espacios de nombres en el servidor de Exchange 2013. Al agregar una referencia a estos espacios de nombres, tendrá acceso a los miembros SmtpReceiveAgent , así como a otras clases usadas en el ejemplo de agente de transporte de conversión de cuerpo de Exchange 2013: Build a body conversion .

  2. Implemente la clase derivada para la clase 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();
           }
       }
    
    

    Este código creará una instancia de la clase derivada e invalidará el método CreateAgent para crear una instancia del nuevo agente personalizado.

  3. Defina el agente.

      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);
           }
       }
    
    

    Después de definir la clase de agente, puede agregar la funcionalidad personalizada. En este ejemplo, el evento OnEndOfData se redirige al controlador de eventos personalizado.

Vea también