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
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 .
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.
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.