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

Aspose.Email for .NET يسمح لك بتنفيذ هذه الميزة في مشروعك باستخدام واجهات برمجة التطبيقات القوية الخاصة به. يحتوي على مجموعة شاملة من المكونات للعمل مع ملفات PST، وأكثر من ذلك.

في هذه المقالة، سنوضح كيفية استخراج الخصائص المحددة، جميع المرفقات، وقائمة المستلمين من الرسائل داخل ملف PST باستخدام C#. ولن نحتاج إلى تحميل جميع عناصر MAPI.

ما الذي تحتاجه للبدء

للعمل مع ملفات تخزين Outlook في C#، سنستخدم مكتبة Aspose.Email for .NET. تتيح لك التعامل مع رسائل البريد الإلكتروني، المرفقات، المجلدات، القوالب، وأكثر من ذلك دون الاعتماد على Microsoft Outlook أو أي تبعيات خارجية. يمكنك تثبيتها عبر NuGet أو باستخدام الأمر التالي في وحدة تحكم مدير الحزم NuGet:

PM> Install-Package Aspose.Email

احصل على رخصة مؤقتة لتقييم المكتبة بدون قيود.

استخراج خصائص محددة باستخدام علامات الخصائص

الفئة PersonalStorage هي واجهة برمجة التطبيقات الأساسية للعمل مع ملفات PST والتي تتضمن الطريقة الفعّالة ExtractProperty. تقوم ExtractProperty باسترجاع خاصية MAPI واحدة بواسطة العلامة الرقمية الخاصة بها (وتعيد null إذا كانت غير موجودة). إنها مثالية لإجراء فحوصات سريعة للقيم مثل PRSUBJECT و PRSENTREPRESENTINGNAME أو PRCREATIONTIME. استخدم KnownPropertyList للحصول على علامات الخصائص المعروفة، ثم استدعِ ExtractProperty مع EntryId للرسالة لقراءة الحقول المطلوبة فقط دون تحميل الرسالة بالكامل.

*علامات الخاصية هي أعداد صحيحة تحدد خاصية MAPI. Aspose.Email توفر الفئة KnownPropertyList للوصول إلى هذه العلامات بسهولة.

عينة الكود

يعرض الكود التالي بلغة C# كيفية فتح ملف PST، والتجول عبر الرسائل في مجلد، واستخراج موضوع الرسالة وعنوان البريد الإلكتروني للمرسل فقط لكل رسالة:

شرح

يوضح هذا الكود مسح PST مع استخدام موارد منخفضة. بدلاً من استخدام pst.ExtractMessage(messageInfo) للحصول على كائن MapiMessage كامل (الذي يحتوي على جميع الخصائص، النص، والمرفقات)، نقوم باستخراج خاصيتين محددتين فقط. طريقة ExtractProperty تصل مباشرة إلى طبقة تخزين PST لاسترجاع بايتات البيانات المطلوبة فقط. هذا النهج سريع ويستهلك ذاكرة قليلة. كما أنه مثالي لإنشاء تقارير أو إحصائيات من مجلدات كبيرة بسرعة. يتم استخدام عامل الشرطية الفارغة (?.) وعامل الدمج الفارغ (??) للتعامل مع الحالات التي قد لا يحتوي فيها الرسالة على الخاصية المطلوبة.

تحميل المرفقات

إن تنزيل جميع المرفقات من رسالة هو سيناريو شائع آخر. بدلاً من استخراج الرسالة بالكامل ثم الوصول إلى مجموعة المرفقات الخاصة بها، يمكنك استخدام الطريقة المخصصة ExtractAttachments. تُعيد هذه الطريقة مجموعة MapiAttachmentCollection لمعرف EntryId للرسالة المحددة، مما يتيح لك حفظ كل مرفق مباشرةً على القرص.

عينة الكود

إليك كيفية استخراج وحفظ جميع المرفقات من رسالة معينة:

شرح

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

استرجاع قوائم المستلمين

وبالمثل، قد تحتاج إلى الحصول على قائمة المستلمين To و Cc و Bcc لرسالة دون معالجة محتواها أو خصائص أخرى. طريقة ExtractRecipients تخدم هذا الغرض بشكل مثالي. تُعيد MapiRecipientCollection للرسالة المحددة بواسطة EntryId.

عينة الكود

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

شرح

تتبع هذه الطريقة نفس المبدأ كما في الطرق الأخرى. يتم تخزين معلومات المستلم كعنصر منفصل داخل الرسالة. ExtractRecipients يقوم بتحليل هذا الجزء المحدد فقط من بيانات الرسالة. هذا مثالي للمهام مثل إنشاء قائمة جهات اتصال من جميع الرسائل المرسلة، تحليل أنماط التواصل، أو تدقيق من تم تضمينه في مناقشات معينة. خاصية RecipientType (من النوع MapiRecipientType) تخبرك إذا كان المستلم هو عنوان To الأساسي، أو كان CC، أو كان مستلم BCC مخفي، مما يوفر سياقًا قيمًا لتطبيقك.

الخلاصة

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

نحن نشجعك على دمج هذه الممارسات المثلى في مشاريعك الخاصة. قم بتنزيل مكتبة Aspose.Email for .NET اليوم من NuGet واكتشف مدى سهولة استغلال الإمكانات الكاملة لملفات PST الخاصة بك دون أي عبء غير ضروري.

جرّب أيضًا مواردنا المجانية:

  • مرجع API يقدم معلومات متعمقة حول الفئات والأساليب.
  • التوثيق يوفر أدلة شاملة مع أمثلة.
  • منتدى الدعم يسمح للمستخدمين بطلب المساعدة ومناقشة المشكلات.
  • المدونة تتضمن تحديثات، دروسًا، وأفضل الممارسات.

انظر أيضًا