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

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

حول تنسيق Mbox

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

أكثر عملاء البريد الإلكتروني المتوافقين مع هذا التنسيق شيوعًا هم:

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

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

  • Evolution - بريد إلكتروني غني بالميزات وتطبيق إدارة المعلومات الشخصية لنظام Linux ، يدعم أيضًا تنسيق mbox. يسمح للمستخدمين باستيراد ملفات mbox ، مما يتيح التكامل السلس لبيانات البريد الإلكتروني في النظام الأساسي الشامل لـ Evolution.

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

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

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

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

من المهم الإشارة إلى أن Aspose.Email الخاص بـ Python يقدم أيضًا دعمًا شاملاً للعديد من تنسيقات mbox ، بما في ذلك تلك المذكورة سابقًا. هذا يعني أنه يمكنك العمل بسلاسة مع هذه الملفات من عملاء بريد إلكتروني مختلفين ، بغض النظر عن تفاصيل التنفيذ المحددة لتنسيق mbox. للاستفادة من قوة واجهة برمجة التطبيقات ، من الممكن إما تنزيل DLL الخاصة بها أو تثبيتها من PyPI باستخدام الأمر التالي:

> pip install Aspose.Email-for-Python-via-NET

افتح ملف Mbox

لبدء العمل مع ملف بتنسيق mbox ، يجب أن نفتحه أولاً. Aspose.Email مكتبة ستساعدنا في ذلك.

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

  • يبدأ الكود باستيراد الوحدات المطلوبة من مكتبة Aspose.Email: MboxStorageReader و MboxLoadOptions.

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

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

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

يوضح مقتطف الشفرة التالي كيفية فتح ملف mbox:

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

mbox_reader = MboxStorageReader.create_reader(file_name, mbox_load_options)

سرد الرسائل من ملف Mbox

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

الأسلوب 1: طريقة EnumerateMessageInfo

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

  • الأداء: إنه أسرع مقارنة بنهج آخر بسبب التركيز على قراءة معلومات الرسالة الأساسية وعرضها وتجنب التحليل وتحميل نص الرسالة أثناء التكرار.

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

لقراءة الرسائل وإدراجها وعرضها في ملف mbox ، سنتبع الخطوات التالية:

  • استيراد الوحدات المطلوبة من مكتبة Aspose.Email: MboxStorageReader و MboxLoadOptions.

  • قم بإنشاء مثيل لفئة MboxLoadOptions. سيحتوي هذا الكائن على خيارات مختلفة لتحميل الملف.

  • تكوين خصائص الكائن:

    • اضبط ترك الفتح على خطأ إذا كنت تريد إغلاق الملف بعد قراءته.
    • قم بتعيين ترميز النص المفضل على “utf-8” لتحديد ترميز النص المطلوب لمحتوى الرسالة.
  • افتح الملف باستخدام طريقة MboxStorageReader.cictureseader() لفئة MboxStorageReader.

  • كرر كل رسالة في الملف باستخدام طريقة enumeratemessageinfo() لكائن mboxreader لاستخراج تفاصيل محددة من كل رسالة. في مثالنا ، هم الموضوع والعنوان والتاريخ.

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

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        print(message_info.subject)
        print(message_info.from_address)
        print(message_info.to)
        print(message_info.date)

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

الأسلوب 2: طريقة تعداد الرسائل

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

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

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

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

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for eml in mbox_reader.enumerate_messages():
        eml.save(f"{eml.subject}.eml")

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

قراءة الرسائل في ملفات Mbox

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

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

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

  • نقوم بإنشاء مثيل EmlLoadOptions. سيحتوي هذا الكائن على خيارات مختلفة لتحميل ملفات EML.
  • تكوين الخصائص:
    • عيّن saveembeddedmessageformat إلى True إذا كنت تريد الحفاظ على تنسيق الرسالة المضمنة داخل ملف EML.
    • عيّن preservetnefattachments إلى True إذا كنت تريد الاحتفاظ بمرفقات TNEF داخل ملف EML.
  • قم بإنشاء مثيل لـ MboxLoadOptions. سيحتوي هذا الكائن على خيارات مختلفة لتحميل ملف mbox.
  • تكوين خصائص mboxloadoptions:
    • اضبط ترك الفتح على خطأ إذا كنت تريد إغلاق الملف بعد قراءته.
    • قم بتعيين ترميز النص المفضل على “utf-8” لتحديد ترميز النص المطلوب لمحتوى الرسالة.
  • افتح الملف باستخدام طريقة MboxStorageReader.cictureseader().
  • داخل حلقة foreach ، نصل إلى خاصية EntryId لكل كائن MboxMessageInfo ، والتي تمثل المعرف الفريد للرسالة المقابلة.
  • ثم نستخدم هذا المعرف مع طريقة ExtractMessage لفئة MboxStorageReader لاسترداد الرسالة الكاملة ككائن MailMessage.
  • أخيرًا ، يمكننا إجراء أي عمليات مطلوبة على الرسالة ، مثل حفظها في ملف .eml منفصل.

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

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions
from aspose.email import EmlLoadOptions

eml_load_options = EmlLoadOptions()
eml_load_options.preserve_embedded_message_format = True
eml_load_options.preserve_tnef_attachments = True

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        eml = mbox_reader.extract_message(message_info.entry_id, eml_load_options)
        eml.save(f"{eml.subject}.eml")

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

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

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

تقدم مكتبة Aspose.Email العديد من الميزات المفيدة لتحسين عملك مع ملفات mbox. لنفكر في اثنين منهم:

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

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

تحصل التعليمة البرمجية التالية على العدد الإجمالي للعناصر (الرسائل) الموجودة في الملف.

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
    items_count = mbox_reader.get_total_items_count()

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

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

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

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        message_size = mbox_reader.current_data_size

خاتمة

في هذه المقالة ، استكشفنا mbox - تنسيق موحد ومقبول على نطاق واسع لتخزين رسائل البريد الإلكتروني. إن بساطته وتوافقه عبر العديد من عملاء وأنظمة البريد الإلكتروني تجعله خيارًا شائعًا لأرشفة بيانات البريد الإلكتروني ونقلها. تدعم مكتبة Aspose.Email for Python التنسيق بما في ذلك الأشكال المختلفة التي تتيح قراءة بيانات البريد الإلكتروني واستخراجها ومعالجتها بسهولة. قدمت مقتطفات الشفرة البسيطة وخطوات الكود تعليمات شاملة ومفصلة حول كيفية فتح وسرد وعرض الرسائل في ملفات mbox.

يمكنك استكشاف ميزات أخرى لـ Aspose.Email باستخدام التوثيق. يمكنك أيضًا إرسال استفساراتك إلى منتدانا.

أنظر أيضا