Filtrare ed estrarre i messaggi MBOX

Il ruolo del filtraggio dei messaggi

Quando si lavora con grandi archivi MBOX, caricare ogni messaggio in memoria può essere inefficiente e non necessario. Nella maggior parte degli scenari, gli sviluppatori devono solo scansionare i metadati di base come oggetto, mittente, destinatario o timestamp per:

  • Visualizzare un elenco di messaggi in un’interfaccia utente
  • Applicare filtri personalizzati prima dell’estrazione
  • Generare report o riepiloghi
  • Indicizzare i messaggi per la ricerca

Il filtraggio evita l’overhead di analizzare i corpi completi dei messaggi o gli allegati, rendendo le applicazioni più veloci e scalabili.

Accedere ai metadati del messaggio

Aspose.Email fornisce il MboxMessageInfo classe progettata per accedere ai metadati di base dei messaggi senza leggere l’intero contenuto di MailMessage. Funziona come un oggetto riassuntivo ed è restituita quando si chiama MboxStorageReader.EnumerateMessageInfo().

Proprietà chiave esposte da MboxMessageInfo per recuperare informazioni su un messaggio includere:

  • DateTime Date - Recupera la data del messaggio
  • MailAddress From - Recupera l’indirizzo del mittente
  • string Subject - Recupera l’oggetto del messaggio
  • MailAddressCollection A - Recupera la collezione di indirizzi che contiene i destinatari del messaggio
  • MailAddressCollection CC - Recupera la collezione di indirizzi che contiene i destinatari Cc
  • MailAddressCollection Bcc - Recupera la collezione di indirizzi che contiene i destinatari Ccn del messaggio
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}");
}

Estrarre i messaggi per EntryId

Il MboxStorageReader la classe include il EnumerateMessageInfo() metodo, che consente di iterare su ogni messaggio in un file MBOX. Usando questo metodo, è possibile estrarre messaggi individuali senza dover attraversare ripetutamente l’intero storage. Ciò migliora le prestazioni e riduce i tempi di elaborazione.

Il MboxMessageInfo classe fornisce il EntryId proprietà, che fornisce l’accesso a identificatori unici per ogni messaggio nel file MBOX. Questo identificatore può essere memorizzato in un database o usato come riferimento per trovare rapidamente ed estrarre messaggi specifici quando necessario.

Il ExtractMessage(string id) metodo nella MboxStorageReader la classe consente agli sviluppatori di estrarre messaggi basati sul loro EntryId unico. Con il ExtractMessage(string id) metodo, puoi sfruttare l’EntryId memorizzato per recuperare il messaggio corrispondente ed eseguire operazioni aggiuntive su di esso.

Il seguente esempio di codice dimostra come estrarre messaggi da un file MBOX usando gli identificatori:

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

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

Filtrare e cercare email MBOX usando MailQuery

Aspose.Email per .NET offre la possibilità di filtrare o cercare messaggi all’interno di archivi di caselle di posta basati su query personalizzate. Questo consente agli sviluppatori di recuperare solo i messaggi che corrispondono a criteri specifici, migliorando le prestazioni e la usabilità quando si lavora con grandi file di archivi email.

Il seguente esempio di codice dimostra come applicare criteri di ricerca a un file di archiviazione della posta con l’API MailQuery. In questo esempio, i messaggi vengono selezionati se il loro oggetto include la frase "Project Update" e se sono stati inviati prima della data odierna.

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

Configura le opzioni di caricamento durante la lettura dei messaggi da MBOX

Le seguenti funzionalità ti consentiranno di specificare varie opzioni relative al caricamento e all’elaborazione dei messaggi:

  • Proprietà MailStorageConverter.MboxMessageOptions - Ottiene o imposta le opzioni di caricamento email durante l’analisi di uno storage Mbox.

  • Metodo MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) - Il parametro EmlLoadOptions specifica le opzioni durante la lettura di un messaggio dallo storage 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");