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");