Filtrering och extrahering av MBOX-meddelanden

Meddelandefiltreringens roll

När du arbetar med stora MBOX-arkiv kan det vara ineffektivt och onödigt att ladda varje meddelande i minnet. I de flesta scenarier behöver utvecklare bara skanna grundläggande metadata som ämne, avsändare, mottagare eller tidsstämpel för att:

  • Visa en lista över meddelanden i ett UI
  • Tillämpa anpassade filter före extraktion
  • Generera rapporter eller sammanfattningar
  • Indexera meddelanden för sökning

Filtrering undviker overheaden av att parsa hela meddelandetexten eller bilagor, vilket gör applikationer snabbare och mer skalbara.

Åtkomst till meddelandemetadata

Aspose.Email tillhandahåller MboxMessageInfo klass utformad för att komma åt grundläggande meddelandemetadat utan att läsa hela MailMessage‑innehållet. Den fungerar som ett sammanfattningsobjekt och returneras när du anropar MboxStorageReader.EnumerateMessageInfo().

Viktiga egenskaper som exponeras av MboxMessageInfo för att hämta information om ett meddelande inkludera:

  • DateTime Datum - Hämtar datumet för meddelandet
  • MailAddress Från - Hämtar avsändaradressen
  • string Ämne - Hämtar meddelandets ämne
  • MailAddressCollection Till - Hämtar adresssamlingen som innehåller mottagarna av meddelandet
  • MailAddressCollection CC - Hämtar adresssamlingen som innehåller CC-mottagare
  • MailAddressCollection Bcc - Hämtar adresssamlingen som innehåller BCC-mottagare av meddelandet
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}");
}

Extrahera meddelanden efter EntryId

Den MboxStorageReader klass innehåller EnumerateMessageInfo() metod, som låter dig iterera igenom varje meddelande i en MBOX-fil. Genom att använda denna metod blir det möjligt att extrahera enskilda meddelanden utan att behöva gå igenom hela lagringen upprepade gånger. Detta förbättrar prestanda och minskar bearbetningstid.

Den MboxMessageInfo klass tillhandahåller EntryId egenskap, som ger åtkomst till unika identifierare för varje meddelande i MBOX-filen. Denna identifierare kan lagras i en databas eller användas som referens för att snabbt hitta och extrahera specifika meddelanden när det behövs.

Den ExtractMessage(string id) metod i MboxStorageReader klass möjliggör för utvecklare att extrahera meddelanden baserat på deras unika EntryId. Med ExtractMessage(string id) metod kan du utnyttja det lagrade EntryId för att hämta motsvarande meddelande och utföra ytterligare operationer med det.

Följande kodexempel visar hur man extraherar meddelanden från en MBOX-fil med hjälp av identifierare:

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

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

Filtrera och sök MBOX-e‑post med MailQuery

Aspose.Email för .NET ger möjlighet att filtrera eller söka meddelanden i brevlådearkiv baserat på anpassade frågor. Detta låter utvecklare hämta endast de meddelanden som matchar specifika kriterier, vilket förbättrar prestanda och användbarhet vid arbete med stora e‑postarkivfiler.

Följande kodexempel visar hur du tillämpar sökkriterier på en e‑postlagringsfil med MailQuery‑API:et. I detta exempel väljs meddelanden om deras ämne innehåller frasen "Project Update" och de som skickades före dagens datum.

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

Konfigurera läsalternativ när meddelanden läses från MBOX

Följande funktioner låter dig ange olika alternativ relaterade till inläsning och bearbetning av meddelanden:

  • MailStorageConverter.MboxMessageOptions-egenskapen - Hämtar eller anger e-postläsningsalternativ när Mbox-lagring parsas.

  • Metoden MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) - parametern EmlLoadOptions anger alternativ när meddelande läses från Mbox-lagring.

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