Trabalhando com Caixa de Correio e Mensagens do Exchange usando WebDav
Obtendo Informações da Caixa de Correio usando WebDav
A classe ExchangeClient tem membros que podem ser usados para obter informações da caixa de correio de um servidor Exchange chamando o método ExchangeClient.GetMailboxInfo(). 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 diretamente de um servidor Exchange.
Para obter as informações da caixa de correio do Exchange:
- Crie uma instância da classe ExchangeClient.
- Especifique o servidor Exchange, nome de usuário, senha e domínio no construtor da classe ExchangeClient.
- Chame o método ExchangeClient.GetMailboxSize() para obter o tamanho da caixa de correio.
- Chame o método ExchangeClient.GetMailboxInfo() para obter uma instância da classe ExchangeMailboxInfo.
- Obtenha as informações da caixa de correio usando as diferentes propriedades da classe ExchangeMailboxInfo.
O seguinte trecho de código mostra como obter informações da caixa de correio do Exchange.
Enviando Mensagens de Email
Você pode enviar mensagens de email usando um servidor Exchange com a ajuda das ferramentas do Aspose.Email.Exchange. O método ExchangeClient.Send() aceita uma instância de MailMessage como parâmetro e envia o email. Este artigo explica como enviar mensagens de email usando um servidor Exchange.
Enviando Mensagens de Email Usando o Servidor Exchange
Para enviar emails usando um servidor Exchange:
- Crie uma instância da classe ExchangeClient.
- Especifique o nome do servidor, nome de usuário, senha e domínio.
- Crie uma instância da classe MailMessage.
- Especifique os campos de de, para, assunto e outras propriedades da MailMessage.
- Chame o método ExchangeClient.Send() para enviar o email.
O seguinte trecho de código mostra como enviar mensagens de email usando o servidor Exchange.
Lendo Emails da Caixa de Correio de Outro Usuário
Algumas contas em servidores Exchange possuem o direito de acessar múltiplas caixas de correio, e alguns usuários têm múltiplas 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 para .NET. Esta API fornece um mecanismo para acessar pastas e emails de outras caixas de correio usando a classe ExchangeClient. 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 usar a classe ExchangeClient para acessar outra caixa de correio.
Listando Mensagens
Uma lista das mensagens de email em uma caixa de correio do Exchange pode ser obtida chamando o método ExchangeClient.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:
- Crie uma instância da classe ExchangeClient.
- Chame o método ListMessages e crie uma coleção de mensagens.
- Percorra a coleção e exiba as informações das mensagens.
O seguinte trecho de código mostra como se conectar à caixa de correio do Exchange e obter uma lista de mensagens da pasta de entrada.
Listando Mensagens de Pastas Diferentes
Os trechos de código acima listam todas as mensagens na pasta de Entrada. É possível obter a lista de mensagens de outras pastas também. O método ExchangeClient.ListMessages() aceita um URI de pasta como parâmetro. Enquanto o URI da pasta for válido, você pode obter a lista de mensagens daquela pasta. Use a propriedade ExchangeClient.MailboxInfo.xxxFolderUri para obter o URI de diferentes pastas. O restante do código é o mesmo para obter uma lista de mensagens. O seguinte trecho de código mostra como listar mensagens de pastas diferentes usando ExchangeClient.
Listando Mensagens por ID
O trecho de código acima usou o método ListMessages para listar todas as mensagens em uma pasta de caixa de correio do servidor Exchange especificada. Se você souber o ID da mensagem de antemão, pode obter a mensagem usando o método ListMessagesbyId(). Para obter a mensagem, passe o URI da pasta e o ID da mensagem. Esse cenário é útil quando você já conhece o ID da mensagem, por exemplo, quando os IDs das mensagens são salvos no banco de dados. O seguinte trecho de código mostra como listar mensagens por ID.
Salvando Mensagens
Este tópico mostra como obter mensagens de uma caixa de correio do servidor Exchange e salvá-las em disco nos formatos EML e MSG:
- Salvar como EML no disco.
- Salvar em um stream de memória.
- Salvar como MSG.
Salvando Mensagens em EML
Para obter mensagens e salvar no formato EML:
- Crie uma instância da classe ExchangeClient.
- Forneça o nome do servidor, nome de usuário, senha e domínio.
- Chame o método ExchangeClient.ListMessages() para obter uma instância da coleção ExchangeMessagesInfoCollection.
- Percorra a coleção ExchangeMessagesInfoCollection para obter o URI exclusivo de cada mensagem.
- Chame o método ExchangeClient.SaveMessage() e passe o URI exclusivo como parâmetro.
- Forneça ao método SaveMessage() um caminho para onde você deseja salvar o arquivo.
O seguinte trecho de código mostra como salvar mensagens em EML.
Salvando Mensagens em um Stream de Memória
Em vez de salvar arquivos EML no disco, é possível salvá-los em um stream de memória. Isso é útil quando você deseja salvar o stream em algum local de armazenamento, como um banco de dados. Uma vez que o stream tenha sido 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 do servidor Exchange em um stream de memória.
Salvando Mensagens em Formato MSG
O método ExchangeClient.SaveMessage() pode salvar diretamente a mensagem no formato EML. Para salvar as mensagens no formato MSG, primeiro, chame o método ExchangeClient.fetchMessage() que retorna uma instância da classe MailMessage. Em seguida, chame o método MailMessage.Save() para salvar a mensagem como MSG. O seguinte trecho de código mostra como obter mensagens de uma caixa de correio do servidor Exchange e salvá-las no formato MSG.
Buscar Mensagens de uma Caixa de Correio do Servidor Exchange
Listar Mensagens em um servidor Exchange usou o método ListMessages 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, por exemplo, o assunto, o ID da mensagem, de e para. Para obter os detalhes completos da mensagem, Aspose.Email.Exchange fornece o método ExchangeClient.FetchMessage(). Este método aceita o URI da mensagem como parâmetro e retorna uma instância da classe MailMessage. A classe MailMessage fornece então detalhes da mensagem como corpo, cabeçalhos e anexos. Para buscar mensagens da Caixa de Correio do Servidor Exchange:
- Crie uma instância do tipo ExchangeClient.
- Especifique o mailboxUri, nome de usuário, senha e domínio.
- Chame ListMessages para obter a ExchangeMessagesInfoCollection.
- Percorra a coleção ExchangeMessagesInfoCollection para obter os valores de ExchangeMessageInfo.UniqueURI.
- Chame ExchangeClient.FetchMessage() e passe ExchangeMessageInfo.UniqueURI como parâmetro.
O seguinte trecho de código mostra como se conectar à caixa de correio do servidor Exchange e buscar todas as mensagens.
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 mesmo recurso de recuperar o tamanho da mensagem usando a propriedade Size. Para recuperar o tamanho da mensagem, a chamada padrão ao método ListMessages do ExchangeClient é usada para recuperar a coleção de ExchangeMessageInfo. O seguinte trecho de código mostra como exibir o tamanho da mensagem usando a classe ExchangeMessageInfo.
Movendo Mensagens
Você pode mover mensagens de email de uma pasta para outra com a ajuda do método MoveItems da classe ExchangeClient. Ele aceita os parâmetros:
- O URI exclusivo da mensagem que deve ser movida.
- O URI exclusivo 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:
- Lê mensagens da pasta de Entrada.
- Processa algumas das mensagens com base em alguns critérios (neste exemplo, encontramos uma palavra-chave no assunto da mensagem).
- Move mensagens que cumprem a condição dada para a pasta processada.
Excluindo Mensagens
Você pode excluir mensagens de email de uma pasta com a ajuda do método DeleteMessage da classe ExchangeClient. Ele aceita o URI exclusivo da mensagem como parâmetro.
Excluindo Mensagens de um Servidor Exchange
O seguinte trecho de código mostra como excluir uma mensagem da pasta de Entrada. Para o propósito deste exemplo, o código:
- Lê mensagens da pasta de Entrada.
- Processa mensagens com base em alguns critérios (neste exemplo, encontramos uma palavra-chave no assunto da mensagem).
- Exclui a mensagem.