Чтение повреждённых PST/OST файлов
Чтение повреждённых PST/OST файлов
В некоторых случаях файл PST или OST может стать недоступным из‑за повреждения. При этом Outlook может не открыть файл, что затрудняет извлечение важных писем и других данных почтового ящика.
Aspose.Email предоставляет API, которое позволяет сканировать и извлекать неповреждённые сообщения из повреждённого PST‑файла, используя идентификаторы сообщений и папок.
Следующие методы класса PersonalStorage class являются важными для восстановления данных из повреждённого PST‑файла:
-
Получение идентификаторов сообщений и папок:
find_messages(parent_entry_id) — получает список ID сообщений в указанной папке.
find_subfolders(parent_entry_id) — получает список ID подпапок внутри заданной папки.
-
Доступ к сообщениям и папкам по их идентификаторам:
extract_message(entry_id) — извлекает сообщение из PST‑файла по его entry ID.
get_folder_by_id(entry_id) — получает папку из PST‑файла по её entry ID.
Следующий пример кода демонстрирует, как перемещаться по потенциально повреждённому PST‑файлу, извлекать неповреждённые сообщения и изучать подпапки:
import aspose.email as ae
def explore_corrupted_pst(pst, root_folder_id):
message_id_list = pst.find_messages(root_folder_id)
for message_id in message_id_list:
try:
msg = pst.extract_message(message_id)
print("- " + msg.subject)
except Exception as e:
print("Message reading error. Entry id: " + message_id)
folder_id_list = pst.find_subfolders(root_folder_id)
for sub_folder_id in folder_id_list:
if sub_folder_id != root_folder_id:
try:
subfolder = pst.get_folder_by_id(sub_folder_id)
print(subfolder.display_name)
except Exception as e:
print("Message reading error. Entry id: " + sub_folder_id)
explore_corrupted_pst(pst, sub_folder_id)
pst = ae.storage.pst.PersonalStorage.from_file("target.pst")
explore_corrupted_pst(pst, pst.root_folder.entry_id_string)