Четете Outlook PST файлове, извличате информация за папки и подпапки
Aspose.Email за .NET предоставя API за четене на Microsoft Outlook PST файлове. Можете да заредите PST файл от диск или поток в инстанция на PersonalStorage клас за достъп до подробна информация за съдържанието му, като папки, подпапки и съобщения. Освен това API‑то предоставя функционалност за включване на search folders, когато извличате съобщения от 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“, разработчиците могат да работят с данните на RSS емисиите, което може да включва абониране за нови емисии, обновяване на съществуващи или извличане на информация от емисиите.
Стойността на RssFeeds в StandardIpmFolder изброяването обикновено представлява предварително дефинирания тип папка, специално проектирана за съхранение на RSS емисии в Outlook PST файл. Използвайки тази стойност от изброяването, разработчиците могат програмено да насочват и взаимодействат с папката „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)