Membaca File MBOX
Kemampuan Membaca Aspose.Email
Mozilla Thunderbird adalah klien email open-source lintas platform, yang dikembangkan oleh Mozilla Foundation. Ia menyimpan email dalam struktur file miliknya, mengelola indeks pesan dan subfolder melalui format file proprietari. Thunderbird membuat satu file .mbox untuk setiap folder email (mis., Inbox, Sent, Trash), dan menyimpan file tersebut di direktori profil pengguna. Setiap file berisi semua pesan dari folder tersebut dalam bentuk yang digabungkan.
Aspose.Email untuk .NET menyediakan API untuk membaca pesan dari file .mbox Thunderbird menggunakan MboxrdStorageReader kelas yang memungkinkan pengembang untuk:
- Buka dan baca pesan secara berurutan, satu per satu
- Ambil metadata seperti Subjek, Dari, Ke, Tanggal, dll., tanpa memuat seluruh konten
- Ekstrak pesan individu menggunakan pengidentifikasi unik (EntryId)
- Pertahankan pengkodean, lampiran TNEF, dan pemformatan
- Baca file secara asynchronous untuk kinerja yang lebih baik pada arsip besar
Baca File MBOX secara Sinkron
baca pesan dari file penyimpanan surat Mozilla Thunderbird. Artikel ini menunjukkan cara membaca pesan dari penyimpanan email Thunderbird:
- Buka file penyimpanan Thunderbird dalam FileStream.
- Buat sebuah instansi dari MboxrdStorageReader kelas dan berikan aliran di atas ke konstruktor.
- Panggil ReadNextMessage() untuk mendapatkan pesan pertama.
- Gunakan yang sama ReadNextMessage() dalam loop while untuk membaca semua pesan.
- Tutup semua aliran.
Potongan kode berikut menunjukkan cara membaca semua pesan dari penyimpanan email 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();
Baca File MBOX secara Asynchronous
Untuk meningkatkan kinerja dan responsivitas saat memproses file MBOX besar, Aspose.Email untuk .NET menyediakan pembacaan MBOX asynchronous melalui CreateReaderAsync metode. Fitur ini sangat berguna dalam aplikasi yang menangani arsip email besar atau menjalankan operasi I/O pada thread latar belakang atau layanan web. Contoh kode berikut menunjukkan cara membaca pesan email dari file MBOX secara asynchronous menggunakan pembaca penyimpanan 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}");
}
}
Baca Pesan Email dalam Batch dengan Dukungan Paginasi
Dapatkan akses paginasi ke pesan yang disimpan dalam file kotak surat. Fitur ini memungkinkan pengembang memproses arsip email besar lebih efisien dengan mengambil pesan dalam bagian-bagian lebih kecil - meningkatkan kinerja dan mengurangi beban memori. Gunakan metode berikut dari MboxStorageReader kelas:
-
EnumerateMessages(int startIndex, int count) - Mengembalikan koleksi enumerable dari instance MailMessage, dimulai dari indeks yang ditentukan dan dibatasi oleh jumlah yang diberikan.
-
EnumerateMessageInfo(int startIndex, int count) - Mengembalikan koleksi enumerable dari objek MboxMessageInfo dengan hanya metadata, juga dipaginasi berdasarkan indeks dan jumlah.
Contoh kode di bawah ini menunjukkan cara membaca rentang pesan tertentu dari arsip surat dengan mendefinisikan indeks mulai dan ukuran batch. Dalam contoh ini, metode mengambil 10 pesan dimulai dari indeks 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);
}
Set Encoding Teks yang Diutamakan saat Memuat File MBOX untuk Membaca
Opsi pengkodean tersedia untuk MboxrdStorageReader class. Ini menyediakan opsi tambahan untuk memuat file mbox dan memastikan bahwa pesan dengan konten yang terenkode akan dibaca dan diproses dengan benar. Cuplikan kode berikut menunjukkan cara Anda dapat mengatur pengkodean teks yang memenuhi kebutuhan Anda:
var reader = new MboxrdStorageReader("sample.mbox", new MboxLoadOptions() { PreferredTextEncoding = Encoding.UTF8});
var message = reader.ReadNextMessage();
Dapatkan Total Jumlah Pesan dari File MBOX
The MboxrdStorageReader kelas menyediakan kemampuan untuk membaca jumlah item yang tersedia dalam file MBox. Ini dapat digunakan untuk mengembangkan aplikasi yang menampilkan kemajuan aktivitas saat memproses file tersebut.
// 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());
}
Dapatkan Ukuran Pesan Saat Ini
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();
}
}