ملفات تخزين ام بوكس

في هذه المقالة ، سوف نستكشف تنسيق mbox ، ونزودك بأجزاء التعليمات البرمجية لمساعدتك على البدء في قراءة ملفات mbox. سوف تتعلم كيفية تحليل ملفات mbox وعرض وحفظ الرسائل الموجودة فيها.

ما هو تنسيق Mbox؟

تنسيق mbox هو تنسيق ملف واسع الاستخدام لتخزين رسائل البريد الإلكتروني. لها تاريخ طويل وهي مدعومة من قبل العديد من عملاء البريد الإلكتروني المشهورين ، بما في ذلك Thunderbird و Apple Mail والعديد من الآخرين. في تنسيق mbox ، يتم تخزين رسائل البريد الإلكتروني المتعددة كنص عادي في ملف واحد ، مما يجعله مناسبًا لأرشفة بيانات البريد الإلكتروني ونقلها.

هناك أشكال مختلفة من تنسيق mbox ، ولكل منها تفاصيل التنفيذ الخاصة به. تتضمن بعض تنسيقات mbox الشائعة “mboxrd” و “mboxo” و “mboxcl” و “mboxcl2”. تختلف هذه الاختلافات بشكل أساسي في الطريقة التي تتعامل بها مع جوانب معينة مثل محددات الرسائل والبيانات الوصفية. من المهم أن تكون على دراية بهذه الاختلافات عند العمل مع ملفات mbox ، حيث يمكن أن تؤثر على توافق بيانات البريد الإلكتروني وتحليلها.

دعنا نلقي نظرة فاحصة على عدد قليل من عملاء البريد الإلكتروني وكيف يستخدمون تنسيق mbox:

  • Thunderbird: Thunderbird هو عميل بريد إلكتروني شائع مفتوح المصدر يستخدم تنسيق mbox لتخزين رسائل البريد الإلكتروني. يخزن جميع رسائل المجلد في ملف mbox واحد بالملحق “.mbox”. يقوم Thunderbird بإنشاء ملفات mbox منفصلة لكل مجلد داخل صندوق بريد المستخدم ، مما يتيح سهولة الإدارة والنسخ الاحتياطي لبيانات البريد الإلكتروني.

  • Apple Mail: Apple Mail ، عميل البريد الإلكتروني الافتراضي على أجهزة macOS و iOS ، يعتمد أيضًا تنسيق mbox. يخزن كل مجلد صندوق بريد كملف mbox منفصل ، مما يجعل من السهل ترحيل بيانات البريد الإلكتروني أو نقلها بين عمليات تثبيت Apple Mail. عادةً ما يكون لملفات Apple Mail mbox الامتداد “.mbox” أو “.mbox.plist”.

  • Eudora: استخدم Eudora ، عميل البريد الإلكتروني الشهير في الماضي ، تنسيق mbox لتخزين رسائل البريد الإلكتروني. استخدم تنسيق mbox معدلًا قليلاً والمعروف باسم “تنسيق صندوق بريد Eudora”. دمج تنسيق صندوق بريد Eudora ميزات إضافية وبيانات وصفية خاصة بـ Eudora ، مثل التسميات وعلامات الحالة.

هذه مجرد أمثلة قليلة لعملاء البريد الإلكتروني الذين يستخدمون تنسيق mbox. يعد فهم تنسيق mbox واستخدامه في عملاء البريد الإلكتروني المختلفين أمرًا ضروريًا عند العمل مع ملفات mbox برمجيًا ، حيث يساعد في ضمان التوافق والتحليل الدقيق لبيانات البريد الإلكتروني.

NET API لقراءة ملفات Mbox

للعمل مع ملفات mbox في C# ، سنستخدم Aspose.Email for .NET. توفر هذه المكتبة القوية والغنية بالميزات مجموعة واسعة من الوظائف لمعالجة البريد الإلكتروني ، بما في ذلك قراءة ملفات mbox واستخراج الرسائل ومعالجة بيانات البريد الإلكتروني. من الجدير بالذكر أن Aspose.Email for .NET يوفر دعمًا شاملاً للعديد من تنسيقات mbox ، بما في ذلك تلك المذكورة أعلاه. يتيح لك هذا العمل مع ملفات mbox من عملاء بريد إلكتروني مختلفين بسلاسة ، بغض النظر عن تفاصيل تنفيذ mbox المحددة. للاستفادة من قوة API ، من الممكن إما تنزيل DLL الخاصة به أو تثبيته من NuGet باستخدام الأمر التالي:

PM> Install-Package Aspose.Email

فتح ملفات Mbox

الآن بعد أن أصبح لدينا فهم أفضل لتنسيق mbox واستخدامه في عملاء بريد إلكتروني مختلفين ، دعنا ننتقل إلى استكشاف ميزات وممارسات العمل مع ملفات mbox باستخدام Aspose.Email. لبدء تحليل ملف mbox ، نحتاج إلى فتحه. فيما يلي خطوات فتح ملف mbox:

  • أولاً ، نقوم بإنشاء مثيل MboxLoadOptions لتحديد الخيارات المطلوبة لتحميل ملف mbox.

  • بعد ذلك ، قمنا بتعيين LeaveOpen على خطأ لإغلاق ملف mbox تلقائيًا بعد القراءة وتحديد Encoding.UTF8 باعتباره ترميز النص المفضل.

  • أخيرًا ، قمنا بإنشاء مثيل لفئة MboxStorageReader من خلال استدعاء الأسلوب الثابت CreateReader ، وتمرير اسم ملف MBOX المصدر ومثيل MboxLoadOptions.

يتم تمثيل الخطوات في مقتطف الشفرة التالي:

var mboxLoadOptions = new MboxLoadOptions
{
    LeaveOpen = false,
    PreferredTextEncoding = Encoding.UTF8
};

var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions);

سرد الرسائل

بمجرد فتح ملف mbox ، يمكننا استرداد معلومات حول الرسائل المخزنة. توضح مقتطفات التعليمات البرمجية التالية طريقتين لسرد الرسائل من ملف mbox.

الأسلوب 1: استخدام طريقة EnumerateMessageInfo

تُستخدم طريقة EnumerateMessageInfo لفئة MboxStorageReader للتكرار خلال الرسائل وعرض معلومات الرسالة الأساسية مثل الموضوع والحقول من وإلى والتاريخ. تقوم أيضًا بإرجاع معرف الرسالة (معرف الإدخال) الذي يمكن استخدامه لاحقًا لقراءة محتوى الرسالة بالكامل. هذا النهج له الخصائص التالية:

  • الأداء: هذا النهج أكثر أداءً مقارنة بالنهج الثاني لأنه يقرأ فقط ويعرض معلومات الرسالة الأساسية. إنه يتجنب الحمل الزائد للتحليل وتحميل محتوى الرسالة بالكامل أثناء التكرار.

  • الكفاءة: من خلال جلب المعلومات الضرورية فقط ، فإنه يقلل من استهلاك الذاكرة ووقت المعالجة. هذا مفيد بشكل خاص عند التعامل مع ملفات mbox الكبيرة التي تحتوي على العديد من الرسائل.

ومع ذلك ، من المهم ملاحظة أنه باستخدام هذا الأسلوب ، لا يتم تحميل محتوى الرسالة بالكامل أثناء التكرار الأولي. بدلاً من ذلك ، يتم جلب التفاصيل الأساسية فقط ، مما يسمح بمعالجة أولية أسرع.

يوضح مقتطف الشفرة التالي عملية التكرار من خلال الرسائل باستخدام طريقة EnumerateMessageInfo واسترجاع المعلومات الخاصة بهم.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var messageInfo in mbox.EnumerateMessageInfo())
    {
        Console.WriteLine(messageInfo.Subject);
        Console.WriteLine(messageInfo.From);
        Console.WriteLine(messageInfo.To);
        Console.WriteLine(messageInfo.Date);
    }
}

بهذه الطريقة ، يمكننا الوصول إلى خصائص مثل الموضوع ، ومن ، إلى ، والتاريخ لعرض التفاصيل ذات الصلة.

الأسلوب 2: استخدام طريقة EnumerateMessages

الطريقة الثانية تتضمن استخدام طريقة EnumerateMessages للتكرار مباشرة من خلال مثيلات MailMessage الموجودة في ملف mbox. يقوم هذا الأسلوب بقراءة محتوى الرسالة بالكامل وتحميله أثناء كل تكرار ، مما يتيح الوصول الفوري إلى معلومات البريد الإلكتروني الكاملة. فيما يلي بعض الجوانب الرئيسية لهذا النهج:

  • الاكتمال: على عكس الطريقة الأولى ، تتيح لك هذه الطريقة الوصول إلى محتوى الرسالة بالكامل ومعالجته ، بما في ذلك النص والمرفقات والعناوين والأجزاء الأخرى. يوفر وصولاً شاملاً إلى بيانات البريد الإلكتروني الكاملة أثناء التكرار.

  • الملاءمة: يكون هذا الأسلوب مفيدًا عندما تريد إجراء عمليات على الرسالة كاملة ، مثل حفظ كل رسالة في ملفات منفصلة (كما هو موضح في المثال).إنه يبسط العملية عن طريق تحميل محتوى الرسالة بالكامل في كل تكرار ، مما يسمح لك بأداء العمليات المطلوبة دون الحاجة إلى عمليات بحث لاحقة.

ومع ذلك ، من المهم مراعاة أن تحميل محتوى الرسالة بالكامل أثناء كل تكرار يمكن أن يكون له تأثير على الأداء ، خاصة عند التعامل مع ملفات mbox كبيرة الحجم أو عدد كبير من الرسائل. قد يكون وقت المعالجة الإضافي المطلوب لتحميل محتوى الرسالة بالكامل بمثابة مفاضلة يجب مراعاتها عند الاختيار بين الطريقتين.

يوضح مقتطف الشفرة التالي عملية التكرار من خلال الرسائل باستخدام طريقة EnumerateMessages واسترداد محتوى الرسالة بالكامل.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var eml in mbox.EnumerateMessages())
    {
        eml.Save($@"{eml.Subject}.eml");
    }
}

بهذه الطريقة ، يمكننا إجراء عمليات مختلفة على كل رسالة ، مثل حفظها في ملفات .eml منفصلة كما هو موضح في المثال.

في النهاية ، يعتمد الاختيار بين هذه الأساليب على حالة الاستخدام والمتطلبات الخاصة بك. إذا كنت بحاجة إلى الوصول بسرعة إلى معلومات الرسائل الأساسية وإجراء مزيد من العمليات على رسائل محددة ، فإن الطريقة الأولى توفر أداءً أفضل. من ناحية أخرى ، إذا كنت بحاجة إلى وصول فوري إلى محتوى الرسالة بالكامل وترغب في إجراء عمليات على جميع الرسائل في وقت واحد ، فإن الطريقة الثانية توفر الراحة على حساب الأداء المنخفض قليلاً.

من المهم تقييم احتياجاتك المحددة والنظر في عوامل مثل حجم ملف mbox وعدد الرسائل والعمليات التي تنوي تنفيذها عند تحديد الأسلوب الأكثر ملاءمة للسيناريو الخاص بك.

قراءة الرسائل

في القسم السابق ، ناقشنا كيفية سرد الرسائل. الآن ، دعنا نستكشف كيف يمكننا قراءة الرسائل الفردية باستخدام معرف السلسلة الخاص بهم ، والذي يمكن اشتقاقه من الطريقة الأولى لتعداد MessageInfo.

عند استخدام طريقة EnumerateMessageInfo لسرد الرسائل ، تقترن كل رسالة بمعرف فريد داخل ملف mbox واحد. يمكن الحصول على هذا المعرف ، الذي يتم تمثيله عادةً كسلسلة ، من خاصية EntryId للكائن MboxMessageInfo.

بمجرد حصولنا على معرف الرسالة ، يمكننا استخدامه لعرض محتوى الرسالة بالكامل من خلال الخطوات التالية:

  • نقوم بإنشاء مثيل EmlLoadOptions لتحديد الخيارات المطلوبة لتحميل الرسائل المستخرجة.
  • نقوم بتمكين الاحتفاظ بتنسيق الرسالة المضمّن ومرفقات TNEF.
  • داخل حلقة foreach ، نصل إلى خاصية EntryId لكل كائن MboxMessageInfo ، والتي تمثل المعرف الفريد للرسالة المقابلة.
  • ثم نستخدم هذا المعرف مع طريقة ExtractMessage لفئة MboxStorageReader لاسترداد الرسالة الكاملة ككائن MailMessage.
  • أخيرًا ، يمكننا إجراء أي عمليات مطلوبة على الرسالة ، مثل حفظها في ملف .eml منفصل.

يوضح مقتطف الشفرة أدناه كيفية قراءة رسالة فردية باستخدام معرف السلسلة الخاص بها:

var emlLoadOptions = new EmlLoadOptions
{
    PreserveEmbeddedMessageFormat = true,
    PreserveTnefAttachments = true
};

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var messageInfo in mbox.EnumerateMessageInfo())
    {
        var eml = mbox.ExtractMessage(messageInfo.EntryId, emlLoadOptions);
        eml.Save($@"{eml.Subject}.eml");
    }
}

من خلال الاستفادة من معرف الرسالة الذي تم الحصول عليه من الطريقة الأولى لتعداد MessageInfo ، يمكننا قراءة الرسائل الفردية بكفاءة بناءً على متطلباتنا المحددة.

تجدر الإشارة إلى أن هذا الأسلوب يسمح لك بقراءة الرسائل المهمة ومعالجتها بشكل انتقائي أثناء تخطي الرسائل الأخرى. تعتبر هذه المرونة ذات قيمة خاصة عند التعامل مع ملفات mbox الكبيرة التي تحتوي على عدد كبير من الرسائل ، لأنها تقلل المعالجة غير الضرورية وتحسن الكفاءة الكلية.

ضع في اعتبارك أن معرف الرسالة فريد داخل ملف mbox واحد. إذا كنت بحاجة إلى العمل مع الرسائل عبر ملفات mbox المتعددة ، فستحتاج إلى الحفاظ على تعيين بين المعرفات والملفات المقابلة لها.

من خلال القدرة على قراءة الرسائل الفردية باستخدام معرف السلسلة الفريد الخاص بها ، لديك قدر أكبر من التحكم والمرونة في معالجة ملفات mbox ويمكنك استخراج محتوى البريد الإلكتروني المطلوب ومعالجته بشكل فعال.

ميزات المنفعة

تقدم مكتبة Aspose.Email العديد من الميزات المفيدة التي يمكن أن تكون مفيدة عند العمل مع ملفات mbox. هنا بضعة أمثلة:

احصل على إجمالي عدد العناصر المخزنة في mbox

يمكننا بسهولة عرض العدد الإجمالي للعناصر المخزنة في ملف mbox باستخدام طريقة GetTotalItemsCount. يمكن أن يكون هذا مفيدًا لتتبع حجم مجموعة البريد الإلكتروني. استخدم مقتطف الشفرة التالي لتحقيق ذلك.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    var itemsCount = mbox.GetTotalItemsCount();
}

احصل على قراءة حجم البيانات في تكرار واحد

من خلال الوصول إلى خاصية CurrentDataSize أثناء التكرار ، يمكننا الحصول على حجم البيانات التي تمت قراءتها في تكرار واحد. يمكن أن تكون هذه معلومات قيمة لتحسين الأداء أو تتبع التقدم. لتحقيق ذلك ، استخدم مقتطف الشفرة التالي:

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var messageInfo in mbox.EnumerateMessageInfo())
    {
        var messageSize = mbox.CurrentDataSize;
    }
}

خاتمة

في هذه المقالة ، استكشفنا تنسيق mbox وقدمنا مكتبة Aspose.Email for .NET كأداة قوية للعمل مع ملفات mbox في مشاريع C#. قمنا بتغطية كيفية فتح ملفات mbox ، وتحليل الرسائل وعرضها ، وعرض بعض ميزات الأداة المساعدة. مسلحًا بهذه المعرفة ومقتطفات التعليمات البرمجية المقدمة ، أنت الآن مجهز للتعامل مع ملفات mbox بسهولة في مساعيك البرمجية. يمكنك استكشاف ميزات أخرى لـ Aspose.Email باستخدام التوثيق. أيضًا ، يمكنك إرسال استفساراتك إلى منتدانا.

أنظر أيضا