Čtení souborů MBOX

Možnosti čtení Aspose.Email

Mozilla Thunderbird je open-source, multiplatformní e‑mailový klient vyvíjený Mozilla Foundation. Ukládá e‑maily ve své vlastní struktuře souborů, spravuje indexy zpráv a podadresáře pomocí proprietárních formátů souborů. Thunderbird vytváří jeden .mbox soubor pro každou e‑mailovou složku (např. Doručená pošta, Odeslané, Koš) a ukládá tyto soubory do adresáře profilu uživatele. Každý soubor obsahuje všechny zprávy z dané složky v sloučené podobě.

Aspose.Email pro .NET poskytuje rozhraní API pro čtení zpráv ze souborů Thunderbird .mbox pomocí MboxrdStorageReader třída, která umožňuje vývojářům:

  • Otevřít a číst zprávy sekvenčně, po jedné
  • Získat metadata jako Předmět, Od, Komu, Datum atd., bez načítání celého obsahu
  • Extrahovat jednotlivé zprávy pomocí unikátních identifikátorů (EntryId)
  • Zachovat kódování, přílohy TNEF a formátování
  • Číst soubory asynchronně pro lepší výkon u velkých archivů

Synchronně číst soubory MBOX

číst zprávy ze souboru poštovního úložiště Mozilla Thunderbird. Tento článek ukazuje, jak číst zprávy z úložiště e‑mailu Thunderbird:

  1. Otevřete soubor úložiště Thunderbird v FileStream.
  2. Vytvořte instanci MboxrdStorageReader třídy a předáte výše uvedený proud konstruktoru.
  3. Zavolejte ReadNextMessage() pro získání první zprávy.
  4. Použijte stejný ReadNextMessage() ve smyčce while pro načtení všech zpráv.
  5. Uzavřete všechny proudy.

Níže uvedený úryvek kódu ukazuje, jak načíst všechny zprávy z poštovního úložiště Thunderbird.

// The path to the File directory.
var dataDir = RunExamples.GetDataDir_Thunderbird();

// Open the storage file with FileStream
var stream = new FileStream(dataDir + "ExampleMbox.mbox", FileMode.Open, FileAccess.Read);
// Create an instance of the MboxrdStorageReader class and pass the stream
var reader = new MboxrdStorageReader(stream, false);
// Start reading messages
var message = reader.ReadNextMessage();

// Read all messages in a loop
while (message != null)
{
    // Manipulate message - show contents
    Console.WriteLine("Subject: " + message.Subject);
    // Save this message in EML or MSG format
    message.Save(message.Subject + ".eml", SaveOptions.DefaultEml);
    message.Save(message.Subject + ".msg", SaveOptions.DefaultMsgUnicode);

    // Get the next message
    message = reader.ReadNextMessage();
}

// Close the streams
reader.Dispose();
stream.Close();

Asynchronně číst soubory MBOX

Pro zvýšení výkonu a odezvy při zpracování velkých souborů MBOX poskytuje Aspose.Email pro .NET asynchronní čtení MBOX prostřednictvím CreateReaderAsync metoda. Tato funkce je zvláště užitečná v aplikacích, které pracují s velkými e‑mailovými archivy nebo provádějí I/O‑intenzivní operace ve vlákně na pozadí či webových službách. Následující ukázkový kód demonstruje, jak asynchronně číst e‑mailové zprávy ze souboru MBOX pomocí čtečky úložiště Aspose.Email:

string mboxFilePath = "emails.mbox";

    // Create a reader for the MBOX file asynchronously
    using (var reader = await MboxrdStorageReader.CreateReaderAsync(mboxFilePath, CancellationToken.None))
    {
    Console.WriteLine("MBOX reader initialized.");

    // Read messages from the MBOX file
        while (reader.ReadNextMessage() is var message && message != null)
        {
            Console.WriteLine($"Subject: {message.Subject}");
        }
    }

Číst e‑mailové zprávy po dávkách s podporou stránkování

Získejte stránkovaný přístup k zprávám uloženým v souborech poštovní schránky. Tato funkce umožňuje vývojářům efektivněji zpracovávat velké e‑mailové archivy načítáním zpráv v menších částech – zlepšuje výkon a snižuje zatížení paměti. Použijte následující metody MboxStorageReader třída:

Níže uvedený ukázkový kód demonstruje, jak přečíst konkrétní rozsah zpráv z poštovního archivu definováním počátečního indexu a velikosti dávky. V příkladu metoda načte 10 zpráv počínaje indexem 0.

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

var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
int startIndex = 0;
int count = 10; // Retrieve messages in batches of 10

foreach (var message in reader.EnumerateMessages(startIndex, count))
{
    Console.WriteLine("Subject: " + message.Subject);
}

Nastavit preferované kódování textu při načítání MBOX souborů pro čtení

Možnost kódování je k dispozici pro MboxrdStorageReader třída. Toto poskytuje další možnosti pro načítání souboru mbox a zajišťuje, že zprávy s kódovaným obsahem budou správně načteny a zpracovány. Následující úryvek kódu ukazuje, jak můžete nastavit kódování textu, které vyhovuje vašim potřebám:

var reader = new MboxrdStorageReader("sample.mbox", new MboxLoadOptions() { PreferredTextEncoding = Encoding.UTF8});
var message = reader.ReadNextMessage();

Získání celkového počtu zpráv ze souborů MBOX

The MboxrdStorageReader třída poskytuje možnost přečíst počet položek dostupných v souboru MBox. To lze použít při vývoji aplikací, které zobrazují průběh činnosti při zpracování takového souboru.

// The path to the File directory.
var dataDir = RunExamples.GetDataDir_Thunderbird();

using (var stream = new FileStream(dataDir + "ExampleMbox.mbox", FileMode.Open, FileAccess.Read))
using (var reader = new MboxrdStorageReader(stream, false))
{
    Console.WriteLine("Total number of messages in Mbox file: " + reader.GetTotalItemsCount());
}

Získat aktuální velikost zprávy

using (var stream = new FileStream(dataDir + "ExampleMbox.mbox", FileMode.Open, FileAccess.Read))
using (var reader = new MboxrdStorageReader(stream, false))
{
    MailMessage msg;
    while ((msg = reader.ReadNextMessage()) != null)
    {
        long currentDataSize = reader.CurrentDataSize;

        msg.Dispose();
    }
}