خواندن فایلهای MBOX
قابلیتهای خواندن Aspose.Email
Mozilla Thunderbird یک کلاینت ایمیل متن باز و چند پلتفرمی است که توسط بنیاد Mozilla توسعه یافته است. این برنامه ایمیلها را در ساختار فایل خود ذخیره میکند، ایندکسهای پیامها و زیرپوشهها را از طریق فرمتهای فایل مالکیتی مدیریت میکند. Thunderbird برای هر پوشه ایمیل (مثلاً Inbox، Sent، Trash) یک فایل .mbox ایجاد میکند و این فایلها را در پوشه پروفایل کاربر ذخیره میکند. هر فایل تمام پیامهای آن پوشه را بهصورت ترکیبی در خود دارد.
Aspose.Email برای .NET APIهایی برای خواندن پیامها از فایلهای .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 متد. این ویژگی مخصوصاً در برنامههایی که آرشیوهای بزرگ ایمیل را مدیریت میکنند یا عملیاتهای وابسته به I/O را در رشتههای پسزمینه یا سرویسهای وب اجرا میکنند مفید است. نمونه کد زیر نشان میدهد چگونه میتوانید پیامهای ایمیل را بهصورت ناهمزمان از یک فایل MBOX با استفاده از یک Aspose.Email storage reader بخوانید:
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 را فقط با متادادهها برمیگرداند، همچنین بر اساس شاخص و تعداد صفحهبندی میشود.
نمونه کد زیر نشان میدهد چگونه میتوان یک بازه مشخص از پیامها را از آرشیو ایمیل با تعریف یک شاخص شروع و اندازهی دستهای خواند. در این مثال، متد ۱۰ پیام را از شاخص ۰ شروع میکند.
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 class. این گزینههای اضافی برای بارگذاری فایل 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();
}
}