Trabalhando com Mensagens do Servidor IMAP
Obtendo as informações de identificação para mensagens recebidas de uma caixa de correio
Ao recuperar e processar mensagens de e-mail, você pode buscar os detalhes dessas mensagens usando seus números de sequência. Os seguintes recursos são utilizados para interagir com uma caixa de correio IMAP:
-
Aspose.Email.MailboxInfo
class - Representa informações de identificação sobre a mensagem em uma caixa de correio.-
Aspose.Email.MailboxInfo.SequenceNumber
property - O número de sequência de uma mensagem. -
Aspose.Email.MailboxInfo.UniqueId
property - O id único de uma mensagem.
-
-
Aspose.Email.MailMessage.ItemId
property - Representa informações de identificação sobre a mensagem em uma caixa de correio.
O exemplo de código abaixo mostra como obter informações de identificação sobre mensagens:
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
var msgs = client.ListMessages("INBOX").Take(5);
var seqIds = msgs.Select(t => t.SequenceNumber);
var msgsViaFetch = client.FetchMessages(seqIds);
for (var i = 0; i < 5; i++)
{
var thisMsg = msgsViaFetch[i];
Console.WriteLine($"Message ID:{seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject:{thisMsg.Subject}");
}
}
Listando IDs de Mensagens MIME do Servidor
ImapMessageInfo fornece o MIME MessageId para identificação de mensagens sem extrair a mensagem completa. O seguinte exemplo de código mostra como listar o messageId MIME.
Listando Mensagens do Servidor
Aspose.Email fornece uma variante sobrecarregada de 2 membros do ListMessages() para recuperar um número específico de mensagens com base em uma consulta. O seguinte exemplo de código mostra como listar Mensagens.
Listando Mensagens do Servidor Recursivamente
O protocolo IMAP suporta listar mensagens recursivamente de uma pasta de caixa de correio. Isso ajuda a listar mensagens de subpastas de uma pasta também. O seguinte exemplo de código mostra como listar mensagens recursivamente.
Listando Mensagens com MultiConnection
ImapClient fornece uma propriedade UseMultiConnection que pode ser usada para criar várias conexões para operações pesadas. Você também pode definir o número de conexões a serem usadas durante o modo de multi-conexão usando ImapClient.ConnectionsQuantity. O seguinte exemplo de código demonstra o uso do modo multi-conexão para listar mensagens e compara seu desempenho com o modo de conexão única.
Obter Mensagens em ordem decrescente
Aspose.Email fornece o método ImapClient.ListMessagesByPage
que lista mensagens com suporte para paginação. Algumas sobrecargas de ImapClient.ListMessagesByPage
aceitam PageSettings
como parâmetro. PageSettings
fornece uma propriedade AscendingSorting
que, quando definida como false, retorna e-mails em ordem decrescente.
O seguinte código de exemplo demonstra o uso da propriedade AscendingSorting da classe PageSettings para alterar a ordem dos e-mails.
Buscar Mensagens do Servidor e Salvar no disco
A classe ImapClient pode buscar mensagens de um servidor IMAP e salvar as mensagens no formato EML em um disco local. Os seguintes passos são necessários para salvar as mensagens no disco:
- Crie uma instância da classe ImapClient.
- Especifique um hostname, porta, nome de usuário e senha no construtor do ImapClient constructor.
- Selecione a pasta usando o método SelectFolder().
- Chame o método ListMessages para obter o objeto ImapMessageInfoCollection.
- Itere pela coleção ImapMessageInfoCollection, chame o método SaveMessage() e forneça o caminho de saída e o nome do arquivo.
O seguinte exemplo de código mostra como buscar mensagens de e-mail de um servidor e salvá-las.
Salvando Mensagens no Formato MSG
No exemplo acima, os e-mails são salvos no formato EML. Para salvar e-mails no formato MSG, o método ImapClient.FetchMessage() precisa ser chamado. Ele retorna a mensagem em uma instância da classe MailMessage. O método MailMessage.Save() pode então ser chamado para salvar a mensagem em MSG. O seguinte exemplo de código mostra como salvar mensagens no formato MSG.
Busca em Grupo de Mensagens
ImapClient fornece um método FetchMessages que aceita um iterável de Números de Sequência ou ID Único e retorna uma lista de MailMessage. O seguinte exemplo de código demonstra o uso do método FetchMessages para buscar mensagens por Números de Sequência e ID Único.
Listando Mensagens com Suporte a Paginação
Em cenários onde o servidor de e-mail contém um grande número de mensagens na caixa de correio, muitas vezes é desejado listar ou recuperar as mensagens com suporte a paginação. A API Aspose.Email ImapClient permite recuperar as mensagens do servidor com suporte a paginação.
Listando os Anexos da Mensagem
Para obter informações sobre anexos, como nome e tamanho, sem buscar os dados do anexo, tente as seguintes APIs:
- Aspose.Email.Clients.Imap.ImapAttachmentInfo - Representa informações de um anexo.
- Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - Representa uma coleção da classe ImapAttachmentInfo.
- Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - Obtém informações para cada anexo em uma mensagem.
O exemplo de código com os passos abaixo mostrará como usar as APIs:
-
Chame o método ListMessages() no objeto imapClient. Este método retornará um ImapMessageInfoCollection contendo informações sobre as mensagens na caixa de correio.
-
Itere através de cada mensagem na messageInfoCollection usando um loop foreach.
-
Chame o método ListAttachments() no objeto imapClient, passando a propriedade SequenceNumber do objeto de mensagem como parâmetro. Este método retornará uma ImapAttachmentInfoCollection contendo informações sobre os anexos na mensagem.
-
Itere através de cada anexo na attachmentInfoCollection usando um loop foreach.
-
Dentro do loop interno, você pode acessar as informações sobre cada anexo usando as propriedades do objeto attachmentInfo. Neste exemplo, o nome e o tamanho de cada anexo são registrados no console usando
Console.WriteLine()
.Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
var messageInfoCollection = imapClient.ListMessages();
foreach (var message in messageInfoCollection)
{
var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);
foreach (var attachmentInfo in attachmentInfoCollection)
{
Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
}
}
Obtendo Pastas e Lendo Mensagens Recursivamente
Neste artigo, a maioria dos recursos do ImapClient são usados para criar um aplicativo que lista todas as pastas e subpastas recursivamente de um servidor IMAP. Ele também salva as mensagens em cada pasta e subpasta em formato MSG em um disco local. No disco, pastas e mensagens são criadas e salvas na mesma estrutura hierárquica que no servidor IMAP. O seguinte exemplo de código mostra como obter as mensagens e as informações das subpastas recursivamente.
Recuperando Parâmetros Extras como Informações Resumidas
Obtendo Informações do Cabeçalho List-Unsubscribe
O cabeçalho List-Unsubscribe contém a URL para se descadastrar de listas de e-mail, como anúncios, boletins informativos, etc. Para obter o cabeçalho List-Unsubscribe, use a propriedade ListUnsubscribe da classe ImapMessageInfo. O seguinte exemplo mostra o uso da propriedade ListUnsubscribe para obter o cabeçalho List-Unsubscribe.