قراءة ملفات MBOX
قدرات قراءة Aspose.Email
Mozilla Thunderbird هو عميل بريد إلكتروني مفتوح المصدر ومتعدد الأنظمة، تم تطويره بواسطة مؤسسة Mozilla. يخزن الرسائل في بنية ملف خاصة به، يدير مؤشرات الرسائل والمجلدات الفرعية عبر صيغ ملفات مملوكة. يُنشئ Thunderbird ملف .mbox واحد لكل مجلد بريد (مثل البريد الوارد، المرسلة، المهملات)، ويخزن هذه الملفات في دليل ملف تعريف المستخدم. يحتوي كل ملف على جميع الرسائل من ذلك المجلد بصيغة مدمجة.
يوفر Aspose.Email لـ .NET واجهات برمجة تطبيقات لقراءة الرسائل من ملفات .mbox الخاصة بـ Thunderbird باستخدام MboxrdStorageReader فئة تتيح للمطوّرين:
- فتح وقراءة الرسائل بالتسلسل، واحدةً تلو الأخرى
- استرجاع البيانات الوصفية مثل العنوان، من، إلى، التاريخ، إلخ، دون تحميل المحتوى الكامل
- استخراج الرسائل الفردية باستخدام معرّفات فريدة (EntryId)
- حفظ الترميز، المرفقات بتنسيق TNEF، والتنسيق
- قراءة الملفات بشكل غير متزامن لأداء أفضل على الأرشيفات الكبيرة
قراءة ملفات MBOX بشكل متزامن
قراءة الرسائل من ملف تخزين البريد الخاص بـ Mozilla Thunderbird. يوضح هذا المقال كيفية قراءة الرسائل من تخزين بريد Thunderbird:
- افتح ملف تخزين Thunderbird في FileStream.
- إنشاء مثيل من الـ MboxrdStorageReader الفئة ومرر التيار السابق إلى المُنشئ.
- استدعِ ReadNextMessage() للحصول على الرسالة الأولى.
- استخدم نفس الـ ReadNextMessage() في حلقة while لقراءة جميع الرسائل.
- إغلاق جميع التدفقات.
يعرض مقطع الشيفرة التالي كيفية قراءة جميع الرسائل من تخزين بريد 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();
قراءة ملفات MBOX بشكل غير متزامن
لتحسين الأداء وسرعة الاستجابة عند معالجة ملفات MBOX الكبيرة، يوفر Aspose.Email لـ .NET قراءة MBOX غير متزامنة عبر CreateReaderAsync الطريقة. تكون هذه الميزة مفيدة بشكل خاص في التطبيقات التي تتعامل مع أرشيفات بريد إلكتروني كبيرة أو تُجري عمليات مدخل/مخرج في خيوط خلفية أو خدمات ويب. يوضح عينة الشيفرة التالية كيفية قراءة رسائل البريد من ملف MBOX بشكل غير متزامن باستخدام قارئ تخزين 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}");
}
}
قراءة رسائل البريد الإلكتروني على دفعات مع دعم التجزئة
احصل على وصول مجزّأ للرسائل المخزَّنة في ملفات صندوق البريد. تتيح هذه الميزة للمطوّرين معالجة أرشيفات البريد الإلكتروني الكبيرة بكفاءة أكبر من خلال جلب الرسائل بأجزاء أصغر - مما يحسن الأداء ويقلل من استهلاك الذاكرة. استخدم الطرق التالية من الـ MboxStorageReader فئة:
-
EnumerateMessages(int startIndex, int count) - إرجاع مجموعة قابلة للتعداد من كائنات MailMessage، بدءًا من الفهرس المحدد ومحدودة بالعدد المحدد.
-
EnumerateMessageInfo(int startIndex, int count) - إرجاع مجموعة قابلة للتعداد من كائنات MboxMessageInfo تحتوي على البيانات الوصفية فقط، مقسّدة أيضًا حسب الفهرس والعدد.
توضح عينة الشيفرة أدناه كيفية قراءة نطاق محدد من الرسائل من أرشيف البريد عن طريق تعريف الفهرس الابتدائي وحجم الدفعة. في المثال، تقوم الطريقة بجلب 10 رسائل بدءًا من الفهرس 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);
}
تحديد ترميز النص المفضّل عند تحميل ملفات MBOX للقراءة
خيار الترميز متاح لـ MboxrdStorageReader فئة. يوفّر هذا خيارات إضافية لتحميل ملف mbox ويضمن قراءة الرسائل ذات المحتوى المشفّر ومعالجتها بشكل صحيح. يوضح مقتطف الشيفرة التالي كيفية ضبط ترميز النص بما يلبي احتياجاتك:
var reader = new MboxrdStorageReader("sample.mbox", new MboxLoadOptions() { PreferredTextEncoding = Encoding.UTF8});
var message = reader.ReadNextMessage();
احصل على إجمالي عدد الرسائل من ملفات MBOX
الـ MboxrdStorageReader الفئة توفر القدرة على قراءة عدد العناصر المتاحة في ملف MBox. يمكن استخدام ذلك لتطوير تطبيقات لعرض تقدم النشاط أثناء معالجة هذا الملف.
// 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());
}
الحصول على حجم الرسالة الحالية
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();
}
}