فایل های ذخیره سازی Mbox

هدف اصلی این مقاله کمک به شما در کشف قالب 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 - یک برنامه مدیریت ایمیل و اطلاعات شخصی با ویژگی های غنی برای لینوکس، از فرمت mbox نیز پشتیبانی می کند. این امکان را به کاربران می دهد تا فایل های mbox را وارد کنند و یکپارچه سازی صاف داده های ایمیل در پلت فرم جامع Evolution را ممکن می سازد.

اینها تنها چند نمونه از کلاینت های ایمیل هستند که از فرمت mbox استفاده می کنند. درک قالب و استفاده از آن در کلاینت های ایمیل مختلف هنگام کار با چنین فایل هایی به صورت برنامه نویسی ضروری است، زیرا به اطمینان از سازگاری و تجزیه دقیق داده های ایمیل کمک می کند.

انواع مختلفی از قالب وجود دارد که هر کدام جزئیات پیاده سازی خاص خود را دارند. برخی از قالب‌های mbox که معمولاً با آن‌ها مواجه می‌شوند عبارتند از «mboxrd»، «mboxo»، «mboxcl»، «mboxcl2». این تغییرات عمدتاً در نحوه رسیدگی به جنبه های خاصی مانند جداکننده پیام و ابرداده متفاوت است. مهم است که هنگام کار با فایل های mbox از این تفاوت ها آگاه باشید، زیرا می توانند بر سازگاری و تجزیه داده های ایمیل تأثیر بگذارند.

Python API برای خواندن فایل های Mbox

کار با فایل‌های mbox در پایتون با کتابخانه Aspose.Email for Python آسان است. این API قوی و غنی از ویژگی‌ها، مجموعه گسترده‌ای از ویژگی‌ها را برای پردازش ایمیل ارائه می‌دهد، مانند توانایی خواندن فایل‌های mbox، استخراج پیام‌ها و دستکاری داده‌های ایمیل.

ذکر این نکته ضروری است که Aspose.Email برای پایتون همچنین از فرمت های مختلف mbox پشتیبانی می کند، از جمله مواردی که قبلا ذکر شد. این بدان معنی است که شما می توانید بدون در نظر گرفتن جزئیات پیاده سازی خاص قالب mbox، با این فایل ها از کلاینت های ایمیل مختلف کار کنید. برای استفاده از قدرت API، می‌توانید DLL آن را دانلود یا از PyPI با استفاده از دستور زیر نصب کنید:

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

فایل Mbox را باز کنید

برای شروع کار با یک فایل با فرمت mbox، ابتدا باید آن را باز کنیم. کتابخانه Aspose.Email در این زمینه به ما کمک خواهد کرد.

در کد ما، مراحل توضیح داده شده در زیر را دنبال می کنیم:

  • کد با وارد کردن ماژول‌های مورد نیاز از کتابخانه Aspose.Email آغاز می‌شود: کلاس‌های MboxStorageReader و MboxLoadOptions.

  • سپس یک نمونه از MboxLoadOptions ایجاد می کنیم تا گزینه های مورد نظر برای بارگذاری فایل را مشخص کنیم.

  • سپس letopen را روی False قرار می دهیم که نشان می دهد فایل باید پس از خواندن بسته شود و UTF8 را به عنوان کدگذاری متن ترجیحی تعیین می کنیم.

  • در نهایت، یک نمونه از کلاس MboxStorageReader را با فراخوانی متد استاتیک createreader، ارسال نام فایل منبع و نمونه 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 ایجاد کنید. این شی گزینه های مختلفی را برای بارگیری فایل نگه می دارد.

  • خصوصیات شی را پیکربندی کنید:

    • اگر می خواهید فایل را پس از خواندن ببندید، گزینه leaveopen را روی False قرار دهید.
    • برای تعیین کدگذاری متن مورد نظر برای محتوای پیام، Preredtextencoding را روی ‘utf-8’ تنظیم کنید.
  • فایل را با متد MboxStorageReader.createreader() از کلاس 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)

به این ترتیب می توانیم به ویژگی هایی مانند Subject، From، To و Date دسترسی داشته باشیم و جزئیات مربوطه را نمایش دهیم.

رویکرد 2: روش EnumerateMessages

برخلاف رویکرد اول، روش دوم برای تکرار مستقیم از طریق نمونه های 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 در خود نگه می دارد.
  • ویژگی ها را پیکربندی کنید:
    • اگر می‌خواهید قالب پیام جاسازی شده را در فایل EML حفظ کنید، روی True تنظیم کنید.
    • اگر می‌خواهید پیوست‌های TNEF را در فایل EML حفظ کنید، savetnefattachments را روی True تنظیم کنید.
  • یک نمونه از MboxLoadOptions ایجاد کنید. این شی گزینه های مختلفی را برای بارگیری فایل mbox نگه می دارد.
  • ویژگی های mboxloadoptions را پیکربندی کنید:
    • اگر می خواهید فایل را پس از خواندن ببندید، گزینه leaveopen را روی False قرار دهید.
    • برای تعیین کدگذاری متن مورد نظر برای محتوای پیام، Preredtextencoding را روی ‘utf-8’ تنظیم کنید.
  • فایل را با روش MboxStorageReader.createreader() باز کنید.
  • در داخل حلقه 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()

اندازه داده را در یک تکرار بخوانید

برای به دست آوردن اندازه داده های خوانده شده در طول یک تکرار، می توانید به ویژگی currentdatasize شی 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 را با استفاده از مستندات کاوش کنید. همچنین، می توانید سوالات خود را در [تالار گفتمان ما] ارسال کنید.

همچنین ببینید