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

در این مقاله، فرمت 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 را آسان می‌کند. فایل‌های mbox Apple Mail معمولاً پسوند «.mbox» یا «.mbox.plist» دارند.

  • Eudora: Eudora، یک سرویس گیرنده ایمیل محبوب در گذشته، از فرمت mbox برای ذخیره پیام های ایمیل استفاده می کرد. از یک فرمت mbox کمی تغییر یافته به نام “فرمت صندوق پستی Eudora” استفاده کرد. قالب صندوق پستی Eudora دارای ویژگی‌های اضافی و ابرداده‌های خاص Eudora، مانند برچسب‌ها و پرچم‌های وضعیت است.

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

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

برای کار با فایل‌های mbox در سی شارپ، از 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 را روی false قرار می دهیم تا پس از خواندن فایل 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);
    }
}

به این ترتیب می توانیم به ویژگی هایی مانند Subject، From، To و 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 را دریافت کنید

با روش GetTotalItemsCount به راحتی می توانیم تعداد کل موارد ذخیره شده در فایل mbox را مشاهده کنیم. این می تواند برای ردیابی اندازه مجموعه ایمیل مفید باشد. برای رسیدن به این هدف از قطعه کد زیر استفاده کنید.

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 در پروژه های سی شارپ معرفی کردیم. ما نحوه باز کردن فایل‌های mbox، تجزیه و مشاهده پیام‌ها را توضیح دادیم و برخی از ویژگی‌های کاربردی را به نمایش گذاشتیم. با داشتن این دانش و تکه های کد ارائه شده، اکنون مجهز به مدیریت فایل های mbox به راحتی در تلاش های برنامه نویسی خود هستید. می توانید سایر ویژگی های Aspose.Email را با استفاده از مستندات کاوش کنید. همچنین، می توانید سوالات خود را در [تالار گفتمان ما] ارسال کنید.

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