Читання файлів Outlook PST, отримання інформації про папки та підпапки

Aspose.Email for .NET надає API для читання файлів Microsoft Outlook PST. Ви можете завантажити файл PST з диска або потоку в екземпляр PersonalStorage клас для доступу до детальної інформації про його вміст, таку як папки, підпапки та повідомлення. Крім того, API надає можливість включати папки пошуку під час отримання повідомлень з папок 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 створює під час додавання поштового облікового запису, такі як Вхідні, Відправлені, Чернетки, Видалені, Календар, Завдання, Примітки тощо.

Нижче наведений приклад коду демонструє, як використати цей метод у проєкті. Якщо встановлено 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-стрічок, що дозволяє розробникам програмно отримувати доступ і маніпулювати RSS-стрічками, збереженими у файлі Outlook PST. Отримавши посилання на "папку RSS-стрічок", розробники можуть працювати з даними RSS-стрічок, включаючи підписку на нові стрічки, оновлення існуючих або вилучення інформації зі стрічок.

Значення RssFeeds у StandardIpmFolder enum зазвичай представляє попередньо визначений тип папки, спеціально призначений для зберігання RSS-стрічок у файлі Outlook PST. Використовуючи це значення enum, розробники можуть програмно працювати з "папкою RSS-стрічок". Наступні приклади коду продемонструють, як впровадити цю функцію у ваш проєкт:

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-стрічок, використайте наступний фрагмент коду:

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)