Trabalhando com Caixa de Correio e Mensagens do Exchange

Obtendo Informações da Caixa de Correio Usando EWS

Você pode obter informações da caixa de correio de um servidor Exchange chamando o método GetMailboxInfo da classe IEWSClient. Ele retorna uma instância do tipo ExchangeMailboxInfo. Obtenha informações da caixa de correio a partir de propriedades como MailboxUri, InboxUri e DraftsUri. Este artigo mostra como acessar informações da caixa de correio usando os Serviços Web do Exchange.

Para se conectar ao servidor Exchange usando os Serviços Web do Exchange (EWS), use a classe IEWSClient. Esta classe usa EWS para se conectar e gerenciar itens em um servidor Exchange. O seguinte trecho de código mostra como obter informações da caixa de correio usando os serviços web do exchange.

Enviando Mensagens de Email

Você pode enviar mensagens de email usando um servidor Exchange com o método IEWSClient->Send() que aceita uma instância de MailMessage como parâmetro e envia o email. Este artigo explica como enviar mensagens de email usando os Serviços Web do Exchange.

O seguinte trecho de código mostra como enviar mensagens de email usando IEWSClient.

Lendo Emails da Caixa de Correio de Outro Usuário

Algumas contas em servidores Exchange têm o direito de acessar várias caixas de correio, e alguns usuários têm várias contas de email no mesmo servidor Exchange. Em ambos os casos, os usuários podem acessar as caixas de correio de outros usuários usando Aspose.Email. Esta API fornece um mecanismo para acessar pastas e emails de outras caixas de correio usando a classe IEWSClient. Essa funcionalidade pode ser alcançada usando o método sobrecarregado GetMailboxInfo() e fornecendo o endereço de email do usuário como parâmetro.

O seguinte trecho de código mostra como ler emails usando a classe IEWSClient.

Listando Mensagens

Uma lista das mensagens de email em uma caixa de correio do Exchange pode ser obtida chamando o método ListMessages. Obtenha as informações básicas sobre as mensagens, como assunto, de, para e ID da mensagem, usando o método ListMessages.

Listagem Simples de Mensagens

Para listar as mensagens em uma caixa de correio do Exchange:

  1. Crie uma instância da classe IEWSClient.
  2. Chame o método ListMessages para obter a coleção de mensagens.
  3. Percorra a coleção e exiba as informações da mensagem.

O seguinte trecho de código mostra como se conectar a um servidor exchange usando EWS e listar mensagens da pasta de entrada.

Listando Mensagens de Pastas Diferentes

O trecho de código acima lista todas as mensagens na pasta de entrada. É possível obter a lista de mensagens de outras pastas também. O método ListMessages aceita uma URI de pasta como parâmetro. Desde que a URI da pasta seja válida, você pode obter a lista de mensagens dessa pasta. Use o IEWSClient->get_MailboxInfo->xxxFolderUri propriedade para obter a URI de diferentes pastas. O resto do código é o mesmo que para obter uma lista de mensagens. O seguinte trecho de código mostra como listar mensagens de pastas diferentes usando EWS.

Listando Mensagens com Suporte a Paginação

O seguinte trecho de código mostra como obter uma lista de mensagens com suporte a paginação.

Obtendo Informações do Tipo da Mensagem a partir do ExchangeMessageInfo

Salvando Mensagens

Este artigo mostra como obter mensagens de uma caixa de correio de servidor Exchange e salvá-las no disco nos formatos EML e MSG:

  • Salvar como EML no disco.
  • Salvar em fluxo de memória.
  • Salvar como MSG.

Salvando Mensagens em EML

Para obter mensagens e salvar em formato EML:

  1. Crie uma instância da classe IEWSClient.
  2. Forneça a mailboxUri, nome de usuário, senha e domínio.
  3. Chame o método IEWSClient->ListMessages() para obter uma instância da coleção ExchangeMessagesInfoCollection.
  4. Percorra a coleção ExchangeMessagesInfoCollection para obter a URI única para cada mensagem.
  5. Chame o método IEWSClient->SaveMessage() e passe a URI única e o local de salvamento como parâmetros.

O seguinte trecho de código mostra como usar EWS para se conectar ao servidor Exchange e salvar mensagens como arquivos EML.

Salvando Mensagens em um Fluxo de Memória

Em vez de salvar arquivos EML no disco, é possível salvá-los em um fluxo de memória. Isso é útil quando você deseja salvar o fluxo em algum local de armazenamento, como um banco de dados. Uma vez que o fluxo foi salvo em um banco de dados, você pode recarregar o arquivo EML na classe MailMessage. O seguinte trecho de código mostra como salvar mensagens de uma caixa de correio de servidor Exchange em um fluxo de memória usando EWS.

Salvando Mensagens em Formato MSG

O método IEWSClient->SaveMessage() pode salvar diretamente a mensagem em formato EML. Para salvar as mensagens em formato MSG, primeiro, chame o método IEWSClient->FetchMessage() que retorna uma instância da classe MailMessage. Em seguida, chame o método MailMessage->Save() para salvar a mensagem em MSG. O seguinte trecho de código mostra como obter mensagens de uma caixa de correio de servidor Exchange e salvá-las no formato MSG usando EWS.

Obtendo ExchangeMessageInfo da URI da Mensagem

Uma mensagem de email é representada por seu identificador único, URI, e é uma parte integral do objeto ExchangeMessageInfo. No caso de apenas a URI da mensagem estar disponível, o objeto ExchangeMessageInfo também pode ser recuperado usando essa informação disponível. A versão sobrecarregada de ListMessages aceita uma lista de IDs e retorna uma coleção de ExchangeMessageInfoCollection. O seguinte trecho de código mostra como obter ExchangeMessageInfo da URI da mensagem.

Buscar Mensagens de uma Caixa de Correio do Servidor Exchange

O método ListMessages() é usado para obter uma lista de mensagens de uma caixa de correio do servidor Exchange. O método ListMessages() obtém informações básicas sobre as mensagens, como o assunto, o ID da mensagem, de e para. Para obter os detalhes completos da mensagem, Aspose.Email fornece o método IEWSClient->FetchMessage(). Este método aceita a URI da mensagem como parâmetro e retorna uma instância da classe MailMessage. A classe MailMessage fornece detalhes da mensagem, como o corpo, cabeçalhos e anexos. Para buscar mensagens da caixa de correio do servidor Exchange:

  1. Crie uma instância do tipo IEWSClient.
  2. Especifique o nome do servidor, nome de usuário, senha e domínio.
  3. Chame o método IEWSClient->ListMessages() para obter a ExchangeMessagesInfoCollection.
  4. Percorra a coleção ExchangeMessagesInfoCollection para obter os valores de ExchangeMessageInfo->get_UniqueUri().
  5. Chame IEWSClient->FetchMessage() e passe ExchangeMessageInfo->get_UniqueUri() como parâmetro.

O seguinte trecho de código demonstra como buscar todas as mensagens usando EWS.

Pré-Busca do Tamanho da Mensagem

O Microsoft Outlook InterOp fornece o recurso de recuperar o tamanho da mensagem antes de realmente buscar a mensagem completa do servidor. No caso da API Aspose.Email, as informações resumidas recuperadas do servidor Exchange são representadas pela classe ExchangeMessageInfo. Ela fornece o recurso de recuperar o tamanho da mensagem usando a propriedade Size. Para recuperar o tamanho da mensagem, a chamada padrão para IEWSClient->ListMessages() é usada para recuperar a ExchangeMessagesInfoCollection. O seguinte trecho de código mostra como exibir o tamanho da mensagem usando a classe ExchangeMessageInfo.

Baixar Mensagens de Pastas Públicas

O Microsoft Exchange Server permite que os usuários criem pastas públicas e publiquem mensagens nelas. Para fazer isso por meio de seu aplicativo, use a classe EWSClient do Aspose.Email para se conectar ao servidor Exchange e ler e baixar mensagens e postagens de pastas públicas. O seguinte trecho de código mostra como ler todas as pastas públicas e subpastas, e listar e baixar quaisquer mensagens encontradas nessas pastas. Este exemplo funciona apenas com o Microsoft Exchange Server 2007 ou superior, já que apenas esses suportam EWS.

Movendo Mensagens

Você pode mover mensagens de email de uma pasta para outra com a ajuda do método Move da classe IEWSClient. Ele aceita os seguintes parâmetros:

  • A URI única da mensagem que deve ser movida.
  • A URI única da pasta de destino.

Movendo Mensagens entre Pastas

O seguinte trecho de código mostra como mover uma mensagem em uma caixa de correio da pasta de Entrada para uma pasta chamada Processada. Neste exemplo, o aplicativo:

  1. Lê mensagens da pasta de Entrada.
  2. Processa algumas das mensagens com base em alguns critérios (neste exemplo, encontramos uma palavra-chave no assunto da mensagem).
  3. Move mensagens que atendem à condição dada para a pasta processada.

Excluindo Mensagens

Você pode excluir mensagens de email de uma pasta com a ajuda do método IEWSClient->DeleteMessage. Ele aceita a URI única da mensagem como parâmetro.

O seguinte trecho de código mostra como excluir uma mensagem da pasta de Entrada. Para os propósitos deste exemplo, o código:

  1. Lê mensagens da pasta de Entrada.
  2. Processa mensagens com base em alguns critérios (neste exemplo, encontramos uma palavra-chave no assunto da mensagem).
  3. Exclui a mensagem.

Copiando Mensagens

A API Aspose.Email permite copiar uma mensagem de uma pasta para outra usando o método IEWSClient->CopyItem. A versão sobrecarregada deste método retorna a URI única da mensagem copiada, conforme mostrado neste artigo.

Copiando uma Mensagem para Outra Pasta

O seguinte trecho de código mostra como copiar uma mensagem para outra pasta.