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:

  1. 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.
  2. 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).
  3. Extraia os números de sequência das mensagens listadas usando o SequenceNumber propriedade de cada mensagem.
  4. 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.
  5. 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:

  1. Chame o ListMessages() método no objeto imapClient. Este método retornará uma ImapMessageInfoCollection contendo informações sobre as mensagens na caixa de correio.
  2. Itere sobre cada mensagem na messageInfoCollection usando um loop foreach.
  3. 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.
  4. Itere sobre cada anexo na attachmentInfoCollection usando um loop foreach.
  5. 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:

  1. Crie uma instância do ImapClient classe.
  2. Especifique um hostname, porta, nome de usuário e senha no ImapClient construtor.
  3. Selecione a pasta usando SelectFolder() método.
  4. Chame o ListMessages método para obter o ImapMessageInfoCollection objeto.
  5. 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.