Criar um agente de transporte SmtpReceiveAgent para o Exchange 2013
Descubra como criar um agente de transporte SmtpReceiveAgent personalizado para usar com o Exchange 2013.
Aplica-se a: Exchange Server 2013
Snippets de código relacionados e aplicativos de exemplo:
As classes SmtpReceiveAgentFactory e SmtpReceiveAgent permitem estender o comportamento do serviço de Transporte front-end em um Servidor de Acesso ao Cliente ou no serviço de transporte em um servidor de caixa de correio. Você pode usar essas classes para implementar agentes de transporte projetados para responder às mensagens à medida que elas entram em sua organização.
As classes SmtpReceiveAgentFactory e SmtpReceiveAgent incluem os eventos listados na tabela a seguir.
Tabela 1. Eventos de classe SmtpReceiveAgent
Event | Descrição |
---|---|
OnAuthCommand |
Use quando seu agente exigir informações fornecidas apenas no comando SMTP AUTH , como um agente que aceita ou rejeita tentativas de entregar uma mensagem com base no tipo de método de autenticação usado. |
OnConnect |
Use quando o agente exigir informações fornecidas somente quando uma conexão for aberta via SMTP para o serviço de Transporte front-end, como um agente que executa uma ação com base no endereço ou domínio do servidor SMTP remoto. |
OnDataCommand |
Use esse evento quando seu agente exigir informações fornecidas no comando SMTP DATA . |
OnDisconnect |
Use quando seu agente exigir informações disponíveis no momento da desconexão, como a data e hora atuais, para executar cálculos de hora. |
OnEhloCommand |
Use quando seu agente exigir informações fornecidas no comando EHLO do SMTP; por exemplo, se o agente aceitar ou rejeitar mensagens com base na identidade fornecida no comando EHLO . |
OnEndOfAuthentication |
Use quando seu agente exigir informações disponíveis após o servidor remoto concluir o processo de autenticação; por exemplo, para um agente que executa uma ação em uma mensagem com base nas informações de autenticação fornecidas pelo servidor ou cliente SMTP remoto. |
Onendofdata |
Use quando o agente precisar executar uma ação com base nos dados disponíveis na mensagem. Este evento não será acionado no serviço de transporte front-end. Se o agente de transporte precisar usar esse evento, você precisará instalá-lo em um servidor da Caixa de Correio. |
OnEndOfHeaders |
Use quando o agente precisar executar uma ação com base nas informações disponíveis nos cabeçalhos da mensagem enviada. |
Criando um agente de transporte SmtpReceiveAgent personalizado
O procedimento a seguir descreve como criar um agente de transporte SmtpReceiveAgent personalizado.
Para criar o agente de transporte
Adicione referências aos namespaces.
using Microsoft.Exchange.Data.Transport; using Microsoft.Exchange.Data.Transport.Smtp; using Microsoft.Exchange.Data.Transport.Email; using Microsoft.Exchange.Data.TextConverters;
Você pode encontrar esses namespaces no servidor do Exchange 2013. Ao adicionar uma referência a esses namespaces, você terá acesso aos membros SmtpReceiveAgent , bem como a outras classes usadas no Exchange 2013: compilar um exemplo de agente de transporte de conversão corporal .
Implemente a classe derivada para a classe 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(); } }
Esse código instanciará a classe derivada e substituirá o método CreateAgent para criar uma instância do seu novo agente personalizado.
Defina seu 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); } }
Depois de definir sua classe de agente, você pode adicionar sua funcionalidade personalizada. Neste exemplo, o evento OnEndOfData é redirecionado para o manipulador de eventos personalizado.