MBOX هو تنسيق ملف صندوق بريد يُستخدم على نطاق واسع ويخزن مجموعات من رسائل البريد الإلكتروني. معالجة ملفات MBOX الكبيرة أمر ضروري للأداء وقابلية التوسع في تطبيقات .NET الحديثة. ولكن قد يكون ذلك تحديًا، خاصةً عند البحث أو قراءة الرسائل على أجزاء.
Aspose.Email for .NET يوفر واجهات برمجة تطبيقات قوية لمعالجة هذه المهام بكفاءة. لكلتا العمليتين - استرجاع مجزأ و تصفية الرسائل مباشرةً من ملفات MBOX - يقدم Aspose.Email حلولًا بسيطة وموثوقة.
في هذه المقالة ستتعلم:
- كيفية تصفية الرسائل باستخدام معايير محددة مثل الموضوع أو المرسل أو التاريخ.
- كيفية تقسيم رسائل البريد الإلكتروني إلى صفحات في ملفات MBOX.
- كيفية دمج التقنيتين لاستخراج الرسائل بشكل مرن.
تصفية وتجزئة رسائل MBOX في C# باستخدام Aspose.Email
Aspose.Email for .NET هي مكتبة شاملة مصممة لإدارة ملفات البريد الإلكتروني وأداء عمليات مختلفة عليها، بما في ذلك ملفات MBOX. تلعب دورًا حيويًا في الاسترجاع المجزأ وتصفية الرسائل. تتيح ميزة الاسترجاع المجزأ للمطورين تحميل وعرض الرسائل في قطع أصغر يمكن التحكم فيها، مما يعزز الأداء عند التعامل مع كميات كبيرة من البريد الإلكتروني. على سبيل المثال، تمكن من استرجاع عدد محدد من الرسائل، مثل 50 رسالة في كل مرة، لتسهيل تجربة المستخدم. بالإضافة إلى ذلك، توفر المكتبة خيارات تصفية قوية، تسمح للمستخدمين بتضييق نطاق الرسائل بناءً على معايير محددة، مثل المرسل، نطاق التاريخ، أو الكلمات المفتاحية. باستخدام الفئات MboxStorageReader، MailQuery وMailQueryBuilder، يمكن للمطورين فتح ملفات MBOX بكفاءة، ضبط خيارات التصفية، استرجاع الرسائل المستهدفة، ومعالجتها وفقًا لذلك. هذا مفيد عندما تتعامل مع آلاف الرسائل ولكنك تحتاج إلى عزل مجموعة فرعية فقط، مثل التحديثات المتعلقة بمشروع معين أو الرسائل المرسلة ضمن نطاق تاريخ معين.
المكتبة متاحة من خلال التنزيل ملف DLL الخاص بها أو تثبيتها من NuGet باستخدام الأمر التالي:
PM> Install-Package Aspose.Email
تصفية رسائل MBOX حسب الموضوع والتاريخ
Aspose.Email MailQuery وMailQueryBuilder تسمح لك بإنشاء استعلامات بحث مرنة لاسترجاع الرسائل التي تلبي شروطك فقط. يوضح عينة الشيفرة التالية كيفية قراءة ملف MBOX، وإنشاء استعلام لتصفية الرسائل بناءً على معايير محددة (الموضوع وتاريخ الإرسال)، ثم تعداد وعرض رسائل البريد الإلكتروني المصفاة.
الخطوات:
- إنشاء قارئ لملف MBOX عن طريق تحديد مسار الملف وخيارات التحميل.
- تهيئة كائن MailQueryBuilder لإنشاء استعلام لتصفية رسائل البريد الإلكتروني.
- تعيين معايير الفلترة: التحقق من وجود “Project Update” في العناوين وتواريخ الإرسال قبل اليوم.
- استرجاع كائن الاستعلام الكامل من مُنشئ الاستعلام.
- التكرار عبر الرسائل التي تطابق الاستعلام وعرض تفاصيلها (الموضوع، التاريخ، والمرسل).
عينة الكود:
يمكنك أيضًا استخدام EnumerateMessageInfo(query) للحصول على بيانات تعريف خفيفة الوزن (مثل: الموضوع، المرسل، التاريخ) إذا لم تكن بحاجة إلى محتويات الرسالة الكاملة.
تقسيم ملفات MBOX الكبيرة إلى صفحات في .NET
عند العمل مع ملفات MBOX الكبيرة، قد يكون تحميل جميع الرسائل في الذاكرة دفعة واحدة مستهلكًا للموارد. لتجنب اختناقات الأداء، توفر Aspose.Email دعم التجزئة، مما يسمح لك بجلب مجموعة فرعية من الرسائل في كل مرة. هذه الميزة تقلل من استخدام الذاكرة وتدعم أنماط واجهة المستخدم مثل “Load More” أو المعالجة الدفعية، مما يجعل عملية التعامل مع البريد الإلكتروني أكثر كفاءة.
يعرض مثال الشيفرة التالي كيفية قراءة وعرض الرسائل من ملف MBOX كبير بطريقة مجزأة.
الخطوات:
- إنشاء كائن MboxStorageReader لقراءة ملف MBOX المحدد (“input.mbox”) باستخدام خيارات التحميل.
- تعيين قيمة ‘pageSize’ (عدد الرسائل في كل صفحة) والفهرس الابتدائي.
- استخدام حلقة ‘while’ لقراءة الرسائل على دفعات حتى يتم معالجة جميعها.
- تعداد الرسائل في الصفحة الحالية باستخدام طريقة EnumerateMessages(startIndex, pageSize).
- التكرار عبر الرسائل المسترجعة والوصول إلى خصائصها (مثل: الموضوع).
- بعد كل صفحة، زيادة الفهرس للانتقال إلى مجموعة الرسائل التالية.
- التوقف عندما لا تكون هناك رسائل أخرى متاحة عن طريق كسر الحلقة عندما يكون عدد الرسائل في الصفحة الحالية أقل من ‘pageSize’.
عينة الكود:
دمج تصفية الرسائل والصفحات
Aspose.Email أيضًا يسمح لك بتصفية رسائل MBOX باستخدام شروط البحث ثم تقسيم النتائج المصفاة إلى صفحات. هذا مفيد عند التعامل مع مجموعات بيانات كبيرة حيث يطابق جزء فقط من الرسائل معاييرك.
يعرض مثال الشيفرة التالي كيفية قراءة الرسائل من ملف MBOX وعرض الرسائل المحددة التي تلبي معايير معينة.
الخطوات:
- تهيئة قارئ MBOX.
- بناء استعلام تصفية باستخدام MailQueryBuilder لتحديد الشروط - على سبيل المثال، الرسائل من نطاق معين والمرسلة في السنة الحالية.
- إنشاء الاستعلام. استدعِ GetQuery() على MailQueryBuilder للحصول على كائن MailQuery.
- تعريف المتغيّر ‘pageSize’، وتهيئة الفهرس، ومتغيّر التحكم في الحلقة.
- استخدم EnumerateMessageInfo(query) للحصول على النتائج المصفاة وتطبيق .Skip(index).Take(pageSize) للتقسيم إلى صفحات.
- تكرار عبر كل صفحة من كائنات MessageInfo وإخراج الحقول ذات الصلة (الموضوع، المرسل، التاريخ).
- زيادة الفهرس بمقدار ‘pageSize’ بعد كل تكرار من الحلقة.
- الخروج من الحلقة عندما تُعيد الصفحة الأخيرة عددًا أقل من الرسائل مما هو متوقع.
عينة الكود:
💡 ملاحظة:
Skip()وTake()هما امتدادات LINQ توفر ترقيم الصفحات على النتائج القابلة للتعداد من EnumerateMessageInfo(query). هذا الجمع فعال لتصفح نتائج البحث المفلترة.
الخلاصة
في هذه المقالة، استكشفنا كيفية استخدام Aspose.Email for .NET لتصفية الرسائل وتجزئتها في ملفات MBOX. هذه القدرات أساسية للتعامل بكفاءة مع كميات كبيرة من بيانات البريد الإلكتروني في تطبيقات C#. من خلال الجمع بين التصفية المتقدمة والاسترجاع المجزأ، يمكنك بناء حلول قابلة للتوسع مثل عارضات أرشيف البريد الإلكتروني، ومعالجات الصناديق الواردة، أو أدوات مراقبة الرسائل - كل ذلك مع الحفاظ على أداء عالي واستهلاك منخفض للذاكرة.
استكشف المزيد بالرجوع إلى الموارد الرسمية:
- API reference يقدم معلومات متعمقة عن الفئات والطرق.
- Documentation يوفر أدلة شاملة مع أمثلة.
- Support forum يتيح للمستخدمين طلب المساعدة ومناقشة المشكلات.
- Blog يعرض تحديثات ودروسًا وأفضل الممارسات.
