Č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:
- Otevřete soubor úložiště Thunderbird v FileStream.
- Vytvořte instanci MboxrdStorageReader třídy a předáte výše uvedený proud konstruktoru.
- Zavolejte ReadNextMessage() pro získání první zprávy.
- Použijte stejný ReadNextMessage() ve smyčce while pro načtení všech zpráv.
- 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:
-
EnumerateMessages(int startIndex, int count) - Vrací vyčlenitelnou kolekci instancí MailMessage, počínaje zadaným indexem a omezenou na daný počet.
-
EnumerateMessageInfo(int startIndex, int count) - Vrací vyčlenitelnou kolekci objektů MboxMessageInfo pouze s metadata, také stránkovanou podle indexu a počtu.
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();
}
}