Filtrando e Extraindo Mensagens MBOX

O Papel da Filtragem de Mensagens

Ao trabalhar com grandes arquivos MBOX, carregar todas as mensagens na memória pode ser ineficiente e desnecessário. Na maioria dos cenários, os desenvolvedores precisam apenas examinar metadados básicos como assunto, remetente, destinatário ou timestamp para:

  • Exibir uma lista de mensagens em uma interface de usuário
  • Aplicar filtros personalizados antes da extração
  • Gerar relatórios ou resumos
  • Indexar mensagens para pesquisa

A filtragem evita a sobrecarga de analisar corpos completos de mensagens ou anexos, tornando as aplicações mais rápidas e escaláveis.

Acessar Metadados da Mensagem

Aspose.Email fornece o MboxMessageInfo classe projetada para acessar metadados básicos da mensagem sem ler o conteúdo completo do MailMessage. Ela funciona como um objeto de resumo e é retornada ao chamar MboxStorageReader.EnumerateMessageInfo().

Propriedades‑chave expostas por MboxMessageInfo para recuperar informações sobre uma mensagem inclua:

  • DateTime Date - Obtém a data da mensagem
  • MailAddress From - Obtém o endereço do remetente
  • string Subject - Obtém o assunto da mensagem
  • MailAddressCollection Para - Obtém a coleção de endereços que contém os destinatários da mensagem
  • MailAddressCollection CC - Obtém a coleção de endereços que contém os destinatários CC
  • MailAddressCollection Bcc - Obtém a coleção de endereços que contém os destinatários CCO da mensagem
MboxStorageReader reader = MboxStorageReader.CreateReader(fileName, new MboxLoadOptions());

foreach (var mboxMessageInfo in reader.EnumerateMessageInfo())
{
    Console.Writeline($"Subject: {mboxMessageInfo.Subject}");
    Console.Writeline($"Date: {mboxMessageInfo.Date}");
    Console.Writeline($"From: {mboxMessageInfo.From}");
    Console.Writeline($"To: {mboxMessageInfo.To}");
    Console.Writeline($"CC: {mboxMessageInfo.CC}");
    Console.Writeline($"Bcc: {mboxMessageInfo.Bcc}");
}

Extrair Mensagens por EntryId

O MboxStorageReader classe inclui o EnumerateMessageInfo() método, que permite iterar por cada mensagem em um arquivo MBOX. Ao usar este método, torna-se possível extrair mensagens individuais sem precisar percorrer todo o armazenamento repetidamente. Isso melhora o desempenho e reduz o tempo de processamento.

O MboxMessageInfo classe fornece o EntryId propriedade, que fornece acesso a identificadores únicos para cada mensagem no arquivo MBOX. Esse identificador pode ser armazenado em um banco de dados ou usado como referência para encontrar e extrair rapidamente mensagens específicas quando necessário.

O ExtractMessage(string id) método na MboxStorageReader classe permite que desenvolvedores extraiam mensagens com base em seu EntryId único. Com o ExtractMessage(string id) método, você pode usar o EntryId armazenado para recuperar a mensagem correspondente e realizar operações adicionais com ela.

O exemplo de código a seguir demonstra como extrair mensagens de um arquivo MBOX usando identificadores:

MboxStorageReader reader = MboxStorageReader.CreateReader("my.mbox", new MboxLoadOptions());

foreach (MboxMessageInfo msgInfo in reader.EnumerateMessageInfo())
{
    MailMessage eml = reader.ExtractMessage(msgInfo.EntryId, new EmlLoadOptions());
}

Filtrar e Pesquisar E‑mails MBOX Usando MailQuery

Aspose.Email para .NET oferece a capacidade de filtrar ou pesquisar mensagens dentro de arquivos de caixa de correio com base em consultas personalizadas. Isso permite que os desenvolvedores recuperem apenas as mensagens que correspondem a critérios específicos, melhorando o desempenho e a usabilidade ao trabalhar com arquivos de arquivos de e‑mail grandes.

O exemplo de código a seguir demonstra como aplicar critérios de busca a um arquivo de armazenamento de e‑mail com a API MailQuery. Neste exemplo, mensagens são selecionadas se o assunto incluir a frase "Project Update" e se foram enviadas antes da data de hoje.

using Aspose.Email.Storage.Mbox;
using Aspose.Email;

var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
var mqb = new MailQueryBuilder();
mqb.Subject.Contains("Project Update");
mqb.SentDate.Before(DateTime.Today);

foreach (var message in reader.EnumerateMessages(mqb.GetQuery()))
{
    Console.WriteLine("Subject: " + message.Subject);
}

Configurar Opções de Carregamento ao Ler Mensagens de MBOX

Os recursos a seguir permitirão especificar várias opções relacionadas ao carregamento e processamento de mensagens:

  • Propriedade MailStorageConverter.MboxMessageOptions - Obtém ou define opções de carregamento de e‑mail ao analisar um armazenamento Mbox.

  • Método MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) - O parâmetro EmlLoadOptions especifica opções ao ler a mensagem do armazenamento Mbox.

var reader = new MboxrdStorageReader(fileName, new MboxLoadOptions());
// Read messages preserving tnef attachments.
var eml = reader.ReadNextMessage(new EmlLoadOptions {PreserveTnefAttachments = true});
MailStorageConverter.MboxMessageOptions(new EmlLoadOptions {PreserveTnefAttachments = true});
// Convert messages from mbox to pst preserving tnef attachments.
var pst = MailStorageConverter.mboxToPst("Input.mbox", "Output.pst");