خواندن فایل‌های PST اوتلوک، دریافت اطلاعات پوشه‌ها و زیرپوشه‌ها

Aspose.Email برای .NET یک API برای خواندن فایل‌های PST مایکروسافت اوتلوک فراهم می‌کند. می‌توانید یک فایل PST را از دیسک یا استریم به یک نمونهٔ PersonalStorage کلاس برای دسترسی به اطلاعات دقیق محتوای آن، مانند پوشه‌ها، زیرپوشه‌ها و پیام‌ها. علاوه بر این، API امکان گنجاندن پوشه‌های جستجو را هنگام بازیابی پیام‌ها از پوشه‌های PST فراهم می‌کند.

بارگذاری یک فایل PST

یک فایل 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 Feeds در PersonalStorage

Aspose.Email قابلیت دریافت یک مرجع به پوشهٔ پیش‌تعریف‌شدهٔ RSS Feeds را فراهم می‌کند، به طوری که توسعه‌دهندگان بتوانند به‌صورت برنامه‌نویسی به فیدهای RSS ذخیره‌شده در یک فایل PST اوتلوک دسترسی پیدا کنند و آنها را مدیریت کنند. با دریافت مرجع به "پوشه RSS Feeds"، می‌توانند با داده‌های فید RSS کار کنند، از جمله اشتراک در فیدهای جدید، به‌روزرسانی فیدهای موجود، یا استخراج اطلاعات از فیدها.

مقدار RssFeeds در StandardIpmFolder enum معمولاً نوع پوشه پیش‌تعریف‌شده‌ای را نمایندگی می‌کند که مخصوص ذخیرهٔ فیدهای RSS در یک فایل 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 enum برای کار با انواع مختلف پوشه‌های 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 - یک مقدار بولی است که مشخص می‌کند آیا متد باید هنگام جستجوی زیرپوشه، جداکنندهٔ مسیر را مدیریت کند یا نه. جداکننده‌های مسیر کاراکترهایی هستند که برای جداسازی پوشه‌ها در مسیر دایرکتوری استفاده می‌شوند (مثلاً "\" در ویندوز یا "/" در یونیکس). اگر بر روی 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)