قراءة ملفات Outlook PST، استرجاع معلومات المجلدات والمجلدات الفرعية

توفر Aspose.Email لـ .NET واجهة برمجة تطبيقات لقراءة ملفات Microsoft Outlook PST. يمكنك تحميل ملف PST من القرص أو من تدفق بيانات إلى نسخة من الفئة PersonalStorage الفئة للوصول إلى معلومات مفصلة حول محتوياتها، مثل المجلدات، المجلدات الفرعية، والرسائل. بالإضافة إلى ذلك، توفر الواجهة وظيفة تضمين مجلدات البحث عند استرجاع الرسائل من مجلدات PST.

تحميل ملف PST

يمكن تحميل ملف Outlook PST في نسخة من الفئة PersonalStorage الفئة. يوضح المقتطف البرمجي التالي كيفية تحميل ملف PST.

عرض معلومات PST

بعد تحميل ملف PST، يمكنك الحصول على معلومات حول اسم عرض الملف، المجلد الجذر، المجلدات الفرعية وعدد الرسائل. يوضح المقتطف البرمجي التالي كيفية عرض اسم ملف PST، المجلدات وعدد الرسائل في كل مجلد:

الحصول على المجلدات التي أنشأها المستخدم فقط

قد تحتوي ملفات PST/OST على مجلدات أنشأها المستخدم، أي باستثناء جميع مجلدات IPM القياسية. توفر Aspose.Email وظيفة الوصول إلى المجلدات التي أنشأها المستخدم فقط باستخدام خاصية only_folders_created_by_user من الفئة PersonalStorageQueryBuilder الفئة. يمكنك تعيين هذه الخاصية إلى True للحصول على المجلدات التي أنشأها المستخدم فقط. يوضح المقتطف البرمجي التالي كيفية استخدام خاصية only_folders_created_by_user في مشروعك:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

query_builder = ae.storage.pst.PersonalStorageQueryBuilder()
query_builder.only_folders_created_by_user.equals(True)

folders = pst.root_folder.get_sub_folders(query_builder.get_query())

for folder in folders:
    print(f"Folder: {folder.display_name}")

تحديد المجلدات المُعرّفة مسبقًا

لمعرفة ما إذا كان المجلد داخل ملف PST هو مجلد قياسي، استخدم طريقة get_predefined_type من الفئة FolderInfo الفئة. المجلدات القياسية (أو المُعرّفة مسبقًا)، على عكس المجلدات التي ينشئها المستخدم، هي المجلدات التي ينشئها Outlook عند إضافة حساب بريد إلكتروني مثل Inbox، Sent Items، Drafts، Deleted Items، Calendar، Tasks، Notes وغيرها.

يوضح مثال الشيفرة أدناه كيفية استخدام هذه الطريقة في مشروع. إذا تم تعيينها إلى True، فإنها تُرجع النوع المُعرّف مسبقًا للمجلد الأب من المستوى الأعلى. هذا يحدد ما إذا كان المجلد الحالي مجلدًا فرعيًا لمجلد مُعرّف مسبقًا. إذا تم تعيينها إلى False، فإنها تُرجع النوع المُعرّف مسبقًا للمجلد الحالي.

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

folders = pst.root_folder.get_sub_folders()

for folder in folders:
    print(f"Folder: {folder.display_name}")
    print(f"Is predefined: {folder.get_predefined_type(False) != ae.storage.pst.StandardIpmFolder.UNSPECIFIED}")
    print("-----------------------------------")

إدارة خلاصات RSS في PersonalStorage

توفر Aspose.Email وظيفة لاسترجاع مرجع إلى مجلد RSS Feeds المُعرّف مسبقًا، مما يسمح للمطورين بالوصول إلى خلاصات RSS المخزنة في ملف Outlook PST ومعالجتها برمجيًا. من خلال الحصول على مرجع إلى "مجلد RSS Feeds"، يمكن للمطورين العمل مع بيانات الخلاصات، والتي قد تشمل الاشتراك في خلاصة جديدة، تحديث الخلاصات الحالية، أو استخراج المعلومات منها.

قيمة RssFeeds في الـ StandardIpmFolder عادةً ما يمثل الـ enum نوع المجلد المُعرّف مسبقًا المصمم خصيصًا لتخزين خلاصات RSS داخل ملف Outlook PST. باستخدام قيمة هذا الـ enum، يمكن للمطورين استهداف والتفاعل مع "مجلد RSS Feeds" برمجيًا. ستُظهر أمثلة الشيفرة التالية كيفية تنفيذ هذه الميزة في مشروعك:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

rss_folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.RSS_FEEDS)

لإضافة مجلد RSS Feeds، استخدم المقتطف البرمجي التالي:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

rss_folder = pst.create_predefined_folder("RSS Feeds", ae.storage.pst.StandardIpmFolder.RSS_FEEDS)

تحليل المجلدات القابلة للبحث

Aspose.Email توفر FolderKind تعداد للعمل مع أنواع مختلفة من مجلدات PST. بالإضافة إلى المجلدات NORMAL، يعمل مع مجلدات SEARCH. مجلد SEARCH هو مجلد افتراضي يوفر عرضًا لجميع عناصر البريد الإلكتروني التي تطابق معايير بحث محددة. لتحليل مجلدات SEARCH، استخدم المقتطف البرمجي التالي:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

folders = pst.root_folder.get_sub_folders(ae.storage.pst.FolderKind.SEARCH | ae.storage.pst.FolderKind.NORMAL)

# Browse through each folder to display folder name and number of messages
for folder in folders:
    print(f"Folder: {folder.display_name}")
    sub_folders = folder.get_sub_folders(ae.storage.pst.FolderKind.SEARCH | ae.storage.pst.FolderKind.NORMAL)
    for sub_folder in sub_folders:
        print(f"Sub-folder: {folder.display_name}")

استخراج معلومات المجلد الأب

يوضح مثال الشيفرة التالي كيفية استرجاع معلومات المجلد الأصلي من MessageInfo.

استرجاع مجلد فرعي من PST عبر المسار

لاسترجاع مجلد فرعي من PST عن طريق المسار، استخدم طريقة get_sub_folder من الفئة FolderInfo الفئة. تسترجع مجلدًا فرعيًا محددًا داخل دليل أو نظام ملفات.

تأخذ الطريقة المعلمات التالية:

  • name - يمثل اسم المجلد الفرعي الذي يجب استرجاعه. يُستخدم لتحديد اسم أو معرّف المجلد الفرعي الذي يجب على الطريقة البحث عنه.

  • ignore_case - هي قيمة منطقية تحدد ما إذا كانت الطريقة يجب أن تتجاهل حساسية الأحرف عند مقارنة اسم المجلد الفرعي. إذا تم تعيينها إلى True، ستعامل الطريقة الاسم كمتطابق بغض النظر عن حالة الأحرف (مثال: "folder" و "Folder" سيُعتَبرا متطابقين). إذا تم تعيينها إلى False، ستجري مقارنة حساسة لحالة الأحرف.

  • handle_path_separator - هي قيمة منطقية تُحدد ما إذا كان يجب على الطريقة التعامل مع فاصل المسار عند البحث عن المجلد الفرعي. فواصل المسار هي أحرف تُستخدم لتحديد فواصل بين المجلدات في مسار الدليل (مثل "\" في Windows أو "/" في Unix). إذا تم تعيينها إلى True، ستتعامل الطريقة مع فاصل المسار تلقائيًا، مما يضمن مطابقة صحيحة للمجلد. إذا تم تعيينها إلى False، سيتعامل مع فاصل المسار كجزء من اسم المجلد الفرعي، مما يؤدي إلى سلوك بحث مختلف.

يُظهر مثال الشيفرة التالي كيفية استرجاع مجلد فرعي من PST عن طريق المسار:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

# In this sample, the method will return a ‘Jan’ named folder
# that is located at the Inbox\Reports\ path 
# relative to the root folder.
folder = pst.root_folder.get_sub_folder("Inbox\Reports\Jan", True, True)