Recuperar e Listar E‑mails do Servidor IMAP
Recuperando e Listando Mensagens
Como Obter Informações de Identificação para Mensagens em uma Caixa de Correio
Ao recuperar e processar mensagens de e‑mail, você pode obter informações detalhadas de identificação, como números de sequência e IDs únicos, usando os recursos a seguir fornecidos pela versão mais recente do Aspose.Email para .NET:
Aspose.Email.ImapMessageInfo classe: Representa as informações de identificação sobre uma mensagem em uma caixa de correio IMAP.
ImapMessageInfo.SequenceNumber propriedade: Recupera o número de sequência da mensagem.
ImapMessageInfo.UniqueId propriedade: Recupera o identificador único da mensagem.
Aspose.Email.MailMessage.ItemId propriedade: Representa informações adicionais de identificação sobre a mensagem dentro da caixa de correio.
O trecho de código a seguir demonstra como obter informações de identificação para mensagens em uma caixa de correio IMAP:
- Crie uma instância do ImapClient classe fornecendo os parâmetros necessários, como host do servidor IMAP, porta, endereço de e‑mail, senha e opções de segurança.
- Use o ListMessages método para recuperar uma lista de mensagens da pasta "INBOX". Limite a lista às primeiras cinco mensagens usando o método Take(5).
- Extraia os números de sequência das mensagens listadas usando o SequenceNumber propriedade de cada mensagem.
- Use o FetchMessages método para recuperar os detalhes completos das mensagens do servidor, usando os números de sequência obtidos na etapa anterior.
- Percorra as mensagens obtidas e, para cada mensagem, recupere e exiba as seguintes informações:
- O número de sequência da mensagem.
- A propriedade ItemId.SequenceNumber.
- O assunto da mensagem.
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
// List the first 5 messages from the inbox
var msgs = client.ListMessages("INBOX").Take(5);
// Get sequence numbers of the messages
var seqIds = msgs.Select(t => t.SequenceNumber);
// Fetch messages based on sequence numbers
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}");
}
}
Listar IDs de Mensagens MIME do Servidor
ImapMessageInfo fornece o MIME MessageId para identificação de mensagem sem extrair a mensagem completa. O trecho de código a seguir mostra como listar o MIME messageId.
Listar Mensagens do Servidor
Aspose.Email fornece uma variante sobrecarregada de 2 membros de ListMessages() para recuperar um número especificado de mensagens com base em uma consulta. O trecho de código a seguir mostra como listar Mensagens.
Listar mensagens recursivamente
O protocolo IMAP suporta a listagem recursiva de mensagens a partir de uma pasta de caixa de correio. Isso também ajuda a listar mensagens de subpastas de uma pasta. O trecho de código a seguir mostra como listar mensagens recursivamente.
Listar mensagens com MultiConnection
ImapClient fornece um UseMultiConnection propriedade que pode ser usada para criar múltiplas conexões para operações intensas. Você também pode definir o número de conexões a ser usado durante o modo multiconexão usando ImapClient.ConnectionsQuantity. O trecho de código a seguir demonstra o uso do modo multiconexão para listar mensagens e compara seu desempenho com o modo de conexão única.
Listar mensagens com suporte a paginação
Em cenários, onde o servidor de email contém um grande número de mensagens na caixa de correio, geralmente deseja‑se listar ou recuperar as mensagens com suporte a paginação. Aspose.Email API’s ImapClient permite que você recupere as mensagens do servidor com suporte a paginação.
Listar Anexos de Mensagens
Para obter informações sobre anexos, como nome e tamanho, sem buscar os dados do anexo, experimente as seguintes APIs:
- Aspose.Email.Clients.Imap.ImapAttachmentInfo - Representa informações de um anexo.
- Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - Representa uma coleção de ImapAttachmentInfo classe.
- Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - Obtém informações de cada anexo em uma mensagem.
O exemplo de código com os passos abaixo mostrará como usar as APIs:
- Chame o ListMessages() método no objeto imapClient. Este método retornará uma ImapMessageInfoCollection contendo informações sobre as mensagens na caixa de correio.
- Itere sobre cada mensagem na messageInfoCollection usando um loop foreach.
- Chame o ListAttachments() método no objeto imapClient, passando a propriedade SequenceNumber do objeto message como parâmetro. Este método retornará uma ImapAttachmentInfoCollection contendo informações sobre os anexos da mensagem.
- Itere sobre cada anexo na attachmentInfoCollection usando um loop foreach.
- Dentro do laço interno, você pode acessar as informações de cada anexo usando as propriedades do objeto attachmentInfo.
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);
}
}
Buscando e Salvando Mensagens
Buscar Mensagens do Servidor
O ImapClient classe pode buscar mensagens de um servidor IMAP e salvar as mensagens no formato EML em um disco local. Os passos a seguir são necessários para salvar as mensagens no disco:
- Crie uma instância do ImapClient classe.
- Especifique um hostname, porta, nome de usuário e senha no ImapClient construtor.
- Selecione a pasta usando SelectFolder() método.
- Chame o ListMessages método para obter o ImapMessageInfoCollection objeto.
- Itere através do ImapMessageInfoCollection coleção, chame o SaveMessage() método e forneça o caminho de saída e o nome do arquivo.
O trecho de código a seguir mostra como buscar mensagens de e‑mail de um servidor e salvá‑las.
Buscar Mensagens em Ordem Descendente
Aspose.Email fornece ImapClient.ListMessagesByPage método que lista mensagens com suporte a paginação. Algumas sobrecargas de ImapClient.ListMessagesByPage aceita PageSettings como parâmetro. PageSettings fornece um AscendingSorting propriedade que, quando definida como false, retorna e‑mails em ordem descendente.
O código de exemplo a seguir demonstra o uso de AscendingSorting propriedade do PageSettings classe para mudar a ordem dos e‑mails.
Salvar mensagens no formato MSG
Para salvar e‑mails no formato MSG, o ImapClient.FetchMessage() É necessário chamar o método. Ele retorna a mensagem em uma instância de MailMessage classe. O MailMessage.Save() O método pode então ser chamado para salvar a mensagem em MSG. O trecho de código a seguir mostra como salvar mensagens no formato MSG.
Agrupar Mensagens Recuperadas
ImapClient fornece um FetchMessages método que aceita um iterável de Números de Sequência ou ID Único e retorna uma lista de MailMessage. O trecho de código a seguir demonstra o uso do FetchMessages método para buscar mensagens por Números de Sequência e ID Único.
Buscar Pastas e Ler Mensagens Recursivamente
Neste artigo, a maioria dos ImapClient recursos são usados para criar um aplicativo que lista todas as pastas e subpastas recursivamente a partir de um servidor IMAP. Ele também salva as mensagens em cada pasta e subpasta no formato MSG em um disco local. No disco, pastas e mensagens são criadas e salvas na mesma estrutura hierárquica do servidor IMAP. O trecho de código a seguir mostra como obter as mensagens e informações de subpastas de forma recursiva.
Manipulação de Informações Especiais de Mensagens
Recuperar Parâmetros Extras como Informações de Resumo
Obter Informações do Cabeçalho List-Unsubscribe
O cabeçalho List-Unsubscribe contém a URL para cancelar a inscrição em listas de e‑mail, por exemplo, anúncios, boletins informativos, etc. Para obter o cabeçalho List-Unsubscribe, use o ListUnsubscribe propriedade do ImapMessageInfo classe. O exemplo a seguir mostra o uso de ListUnsubscribe propriedade para obter o cabeçalho List-Unsubscribe.