Робота з повідомленнями у PST файлі

Contents
[ ]

Додати повідомлення до файлів PST Outlook

Додати одне повідомлення до файлу PST

Створити новий файл PST та додати підпапки показує, як створити файл PST та додати підпапку до нього. За допомогою Aspose.Email ви також можете додавати повідомлення до підпапок файлу PST, який ви створили або завантажили. Наведений нижче приклад коду демонструє, як створити новий файл PST, додати папку "Inbox", а потім додати повідомлення до цієї папки. Це PersonalStorage і FolderInfo класи використовуються для виконання завдання.

  1. Використайте PersonalStorage.create метод для ініціації нового файлу PST, вказуючи шлях до файлу та версію формату файлу як Unicode.
  2. Створіть нову папку з назвою "Inbox" у кореневому каталозі файлу PST.
  3. Додайте повідомлення до щойно створеної папки "Inbox", використовуючи add_message метод.
  4. Завантажте повідомлення, використовуючи MapiMessage.load.
pst = PersonalStorage.create(dataDir + "AddMessagesToPst_out.pst", FileFormatVersion.UNICODE)

# Add new folder "Inbox"
inboxFolder = pst.root_folder.add_sub_folder("Inbox");

# Add message to Inbox Folder
inboxFolder.add_message(MapiMessage.load(dataDir + "MapiMsgWithPoll.msg"))

pst.dispose()

Додати кілька повідомлень до файлів PST для кращої продуктивності

Додавання окремих повідомлень до PST передбачає більше операцій вводу/виводу на диск і тому може сповільнити продуктивність. Щоб підвищити продуктивність, повідомлення можна додавати до PST у пакетному режимі, мінімізуючи операції I/O.

Завантажити та додати повідомлення з диска

The add_messages метод дозволяє визначити діапазон повідомлень, які будуть додані до файлу PST. Нижче наведений приклад коду демонструє, як додати кілька повідомлень з диска до файлу PST для підвищення продуктивності:

  1. Визначте функцію, створивши add_messages_in_bulk_mode з параметрами для назви файлу PST та папки з повідомленнями.
  2. Відкрийте вказаний файл PST, використовуючи PersonalStorage.from_file().
  3. Отримайте підпапку "myInbox" з кореневої папки PST.
  4. Додайте повідомлення з вказаної папки пакетно, використовуючи folder.add_messages().
  5. Викличте add_messages_in_bulk_mode() з файлом PST та іменем папки як аргументами.
from aspose.email.storage.pst import PersonalStorage, StandardIpmFolder, FileFormatVersion

def add_messages_in_bulk_mode(file_name, msg_folder_name):
    with PersonalStorage.from_file(file_name) as personal_storage:
        folder = personal_storage.root_folder.get_sub_folder("myInbox")
        folder.add_messages(message_collection(msg_folder_name))

# Add multiple messages from the specified folder to the PST file for improved performance
add_messages_in_bulk_mode("file.pst", "folder_with_messages")

Використовувати MapiMessageEnumerator для пакетних операцій

Щоб оптимізувати пакетну обробку повідомлень, ви можете реалізувати MapiMessageEnumerator клас, який ефективно перебирає повідомлення, збережені у вказаній папці. Наведений скрипт Python забезпечує структурований підхід до перелічення та ітерації MAPI повідомлень за допомогою бібліотеки Aspose.Email. Він визначає два допоміжних класи:

  • MapiMessageEnumerator для читання повідомлень із каталогу,

  • і MapiMessageCollection для управління ними під час пакетних операцій.

Цей підхід полегшує обход та обробку файлів MAPI повідомлень.

import os
from aspose.email.mapi import MapiMessage

# Define a class to enumerate through MAPI message files in a directory
class MapiMessageEnumerator:
    def __init__(self, path):
        self.files = os.listdir(path)
        self.position = -1

    def __next__(self):
        self.position += 1
        if self.position < len(self.files):
            return MapiMessage.from_file(os.path.join(self.path, self.files[self.position]))
        else:
            raise StopIteration

    def __iter__(self):
        return self

# Define a collection class for managing MAPI messages
class MapiMessageCollection:
    def __init__(self, path):
        self.path = path

    def __iter__(self):
        return MapiMessageEnumerator(self.path)


# Iterate through MAPI messages in a specific directory
msg_folder_name = "\\Files\\msg"

# Initialize a collection with the directory containing message files
message_collection = MapiMessageCollection(msg_folder_name)
for message in message_collection:
    # Process each MAPI message object as needed
    pass

Додати повідомлення з іншого PST

Для імпорту повідомлень з одного файлу PST в інший Aspose.Email надає FolderInfo.enumerate_mapi_messages() метод. Наведений приклад коду демонструє, як копіювати повідомлення з папки "Inbox" в одному файлі PST до іншого файлу PST:

Отримати повідомлення з файлів Outlook PST

У Читання файлів Outlook PST, отримання інформації про папки та підпапки, ми обговорювали завантаження файлу Outlook PST та перегляд його папок для отримання назв папок і кількості повідомлень у них. У цій статті пояснюється, як отримувати та витягувати повідомлення з файлів Outlook PST: отримувати базові деталі повідомлень, підраховувати кількість елементів у папці та витягувати певну кількість повідомлень для обробки або аналізу.

Отримати базову інформацію про повідомлення

Нижче наведений приклад коду демонструє, як витягнути та відобразити ключову інформацію з MAPI повідомлень, збережених у файлі PST, використовуючи бібліотеку Aspose.Email. Він ініціалізує PersonalStorage об’єкт з файлу "Outlook.pst", отримує вміст кореневої папки та ітерує кожне повідомлення. Скрипт виводить деталі, такі як тема, інформація про відправника, адреси одержувачів, час доставки та тіло повідомлення, надаючи всебічний огляд кожного листа у зазначеному файлі PST.

from aspose.email.storage.pst import *
from aspose.email.mapi import MapiMessage

pst = PersonalStorage.from_file("Outlook.pst")

folderInfo = pst.root_folder

messageInfoCollection = folderInfo.get_contents()

for messageInfo in messageInfoCollection:
   mapi = pst.extract_message(messageInfo)

   print("Subject: " + mapi.subject)
   print("Sender name: " + mapi.sender_name)
   print("Sender email address: " + mapi.sender_email_address)
   print("To: ", mapi.display_to)
   print("Cc: ", mapi.display_cc)
   print("Bcc: ", mapi.display_bcc)
   print("Delivery time: ", str(mapi.delivery_time))
   print("Body: " + mapi.body)

Рекурсивне читання вкладених папок

Файл Outlook PST може містити вкладені папки. Щоб отримати інформацію про повідомлення з цих папок, а також з папок верхнього рівня, використовуйте рекурсивний метод для читання всіх папок. Наведений нижче фрагмент коду показує, як прочитати файл Outlook PST і рекурсивно відобразити вміст папок та повідомлень:

Отримати загальну кількість елементів у папці PST

Щоб отримати загальну кількість елементів (наприклад, листи, зустрічі, завдання, контакти тощо), що зберігаються в сховищі повідомлень, використайте метод get_total_items_count() MessageStore клас. Він забезпечує зручний спосіб швидко отримати інформацію про розмір і обсяг даних у сховищі. Нижче наведений приклад коду показує, як отримати загальну кількість елементів з файлу PST:

import aspose.email as ae

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

count = pst.store.get_total_items_count()

Витягнути конкретну кількість повідомлень

Щоб витягнути задану кількість повідомлень з файлу PST, використайте метод get_contents(start_index, count) FolderInfo клас. Він приймає два параметри:

  • start_index — номер початкового повідомлення, наприклад 10‑те;
  • count — загальна кількість повідомлень для отримання.

Отримання лише необхідного підмножини повідомлень у певний момент може бути корисним для управління великими обсягами даних електронної пошти. Нижче наведений приклад коду демонструє реалізацію цієї функції:

import aspose.email as ae

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

folder = pst.root_folder.get_sub_folder("Inbox")

# Extracts messages starting from 10th index top and extract total 100 messages
messages = folder.get_contents(10, 100)

Працювати з вкладеннями у файлах PST

Витягнути вкладення без витягування всього повідомлення

Aspose.Email для Python дозволяє витягати вкладення з повідомлень PST без потреби спочатку витягати все повідомлення. Це можна зробити за допомогою extract_attachments метод PersonalStorage клас. Наведений нижче фрагмент коду демонструє, як витягти вкладення, пропускаючи файли .msg:

from aspose.email.storage.pst import PersonalStorage

# Open the PST file 
with PersonalStorage.from_file(data_dir + "my.pst") as personal_storage:
    # Get the "Inbox" subfolder from the root folder in the personal storage
    folder = personal_storage.root_folder.get_sub_folder("Inbox")

    # Iterate over each message entry ID in the Inbox folder
    for message_info in folder.enumerate_messages_entry_id():
        # Extract attachments for the current message
        attachments = personal_storage.extract_attachments(message_info)

        # Check if the message has any attachments
        if attachments.count > 0:
            # Iterate over each attachment in the list
            for attachment in attachments:
                # Ignore attachments that are message files (.msg)
                if attachment.long_file_name and attachment.long_file_name.endswith(".msg"):
                    continue
                # Save the attachment with its original file name
                attachment.save(data_dir + attachment.long_file_name)

Додати файли як вкладення до повідомлень PST

Microsoft Outlook — потужний інструмент для керування електронною поштою, календарями, завданнями, контактами та журналами. Окрім цих базових функцій, він також дозволяє додавати файли до папок PST, що дає змогу користувачам вести повний облік пов’язаних документів. Aspose.Email спрощує процес додавання файлів до папки PST, працюючи подібно до обробки повідомлень, контактів, завдань та журналів.

Нижче наведений фрагмент коду ілюструє, як додати документ до папки PST за допомогою Aspose.Email:

from aspose.email.storage.pst import PersonalStorage, FileFormatVersion

# Create a new PST file
personal_storage = PersonalStorage.create(data_dir + "AddFilesToPst_out.pst", FileFormatVersion.UNICODE)

# Add a new folder to store files
folder = personal_storage.root_folder.add_sub_folder("Files")

# Add a file to the PST folder
folder.add_file(data_dir + "FileToBeAddedToPST.txt", "")

Пошук та фільтрація повідомлень у файлах PST

Файли Personal Storage (PST) можуть містити велику кількість даних, і для пошуку даних, що відповідають певним критеріям, потрібно застосовувати кілька фільтрацій. За допомогою PersonalStorageQueryBuilder клас, Aspose.Email дозволяє виконувати пошук конкретних записів у PST на основі визначених критеріїв пошуку. Ви можете шукати повідомлення за параметрами, такими як відправник, одержувач, тема, важливість повідомлення, наявність вкладень, розмір повідомлення та навіть ID повідомлення. Крім того, PersonalStorageQueryBuilder можна використовувати для пошуку в підпапках. Наступні розділи надають всебічний посібник щодо пошуку у файлах Outlook PST.

Пошук повідомлень та папок Outlook

Наступний фрагмент коду показує, як використовувати PersonalStorageQueryBuilder клас для пошуку вмісту в PST за різними критеріями пошуку. Особливо демонструє пошук у PST за:

  • Важливість повідомлення.
  • Клас повідомлення.
  • Наявність вкладень.
  • Розмір повідомлення.
  • Непрочитані повідомлення.
  • Непрочитані повідомлення з вкладеннями та папки з певною назвою підпапки.
from aspose.email.mapi import MapiMessageFlags
from aspose.email.storage.pst import PersonalStorage, PersonalStorageQueryBuilder, MapiImportance

with PersonalStorage.from_file(data_dir + "my.pst") as personal_storage:
    folder = personal_storage.root_folder.get_sub_folder("Inbox")
    builder = PersonalStorageQueryBuilder()

    # High importance messages
    builder.importance.equals(2)
    messages = folder.get_contents(builder.get_query())
    print("Messages with High Imp:", messages.count)

    builder = PersonalStorageQueryBuilder()
    builder.message_class.equals("IPM.Note")
    messages = folder.get_contents(builder.get_query())
    print("Messages with IPM.Note:", messages.count)

    builder = PersonalStorageQueryBuilder()
    # Messages with attachments AND high importance
    builder.importance.equals(2)
    builder.has_flags(MapiMessageFlags.HASATTACH)
    messages = folder.get_contents(builder.get_query())
    print("Messages with atts:", messages.count)

    builder = PersonalStorageQueryBuilder()
    # Messages with size > 15 KB
    builder.message_size.greater(15000)
    messages = folder.get_contents(builder.get_query())
    print("Messages size > 15 KB:", messages.count)

    builder = PersonalStorageQueryBuilder()
    # Unread messages
    builder.has_no_flags(MapiMessageFlags.READ)
    messages = folder.get_contents(builder.get_query())
    print("Unread:", messages.count)

    builder = PersonalStorageQueryBuilder()
    # Unread messages with attachments
    builder.has_no_flags(MapiMessageFlags.READ)
    builder.has_flags(MapiMessageFlags.HASATTACH)
    messages = folder.get_contents(builder.get_query())
    print("Unread msgs with atts:", messages.count)

    # Folder with name 'SubInbox'
    builder = PersonalStorageQueryBuilder()
    builder.folder_name.equals("SubInbox")
    folders = folder.get_sub_folders(builder.get_query())
    print("Folder having subfolder:", folders.count)

    builder = PersonalStorageQueryBuilder()
    # Folders with subfolders
    builder.has_subfolders()
    folders = folder.get_sub_folders(builder.get_query())
    print("Folders with subfolders:", folders.count)

Пошук з нечутливістю до регістру

Використовуючи Aspose.Email PersonalStorageQueryBuilder, ви можете вказати умови пошуку електронних листів, ігноруючи регістр, що забезпечує більш гнучкий та зручний пошук. Наведений приклад коду демонструє, як завантажити файл PST, отримати доступ до папки "Inbox" і застосувати фільтри пошуку без урахування регістру для знаходження листів за інформацією про відправника. Ця функція особливо корисна при роботі з різною капиталізацією в даних електронної пошти.

Пошук тем за допомогою декількох ключових слів

Отримати конкретні повідомлення або елементи із файлу особистого сховища (PST) або сховища повідомлень, реалізувавши either(query1, query2) метод PersonalStorageQueryBuilder клас. Приймає два параметри, що дозволяють поєднати два різних запити, query1 і query2, і знайти тему повідомлення, що відповідає будь‑якому з двох вказаних слів. Дивіться приклад коду нижче:

import aspose.email as ae

builder1 = ae.storage.pst.PersonalStorageQueryBuilder()
builder1.subject.contains("Review") # 'Review' is key word for the search

builder2 = ae.storage.pst.PersonalStorageQueryBuilder()
builder2.subject.contains("Error") # 'Error' is also key word for the search

builder = ae.storage.pst.PersonalStorageQueryBuilder()
# message subjects must contain 'Review' or 'Error' words
builder.either(builder1.get_query(), builder2.get_query())


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

folder = pst.root_folder.get_sub_folder("Inbox")
messages = folder.get_contents(builder.get_query())

for message in messages:
    print(f"Message: {message.subject}")

Фільтрувати електронні листи в PST за конкретними критеріями

Отримати лише повідомлення, що відповідають певному фільтру, наприклад темі, відправнику або даті, використовуючи MailQuery клас. Наведений нижче приклад коду демонструє, як використовувати бібліотеку Aspose.Email для завантаження PST‑файлу та фільтрації повідомлень у певній папці, у цьому випадку у папці "Inbox":

import aspose.email as ae

# Load the PST file and access a folder
pst = ae.PersonalStorage.from_file("sample.pst")
inbox = pst.root_folder.get_sub_folder("Inbox")

# Create a MailQuery to filter messages by subject
query_builder = ae.MailQueryBuilder()
query_builder.subject.contains("Invoice")

query = query_builder.get_query()

# Enumerate filtered messages
for info in inbox.enumerate_mapi_messages(query):
    print("Subject:", info.subject)

Отримати повідомлення за типом

Aspose.Email MessageKind перевантаження дозволяє отримувати повідомлення певного типу, наприклад лише електронні листи, зустрічі або контакти. Наведений нижче приклад коду демонструє, як отримати доступ і фільтрувати конкретні типи повідомлень у зазначеній папці:

import aspose.email as ae

# Load the PST and target folder
pst = ae.PersonalStorage.from_file("sample.pst")
inbox = pst.root_folder.get_sub_folder("Inbox")

# Retrieve only email messages (not calendar items, contacts, etc.)
for info in inbox.enumerate_mapi_messages(ae.MessageKind.MAPI_MESSAGE):
    print("Email Message:", info.subject)

Пагінація отримання повідомлень для великих PST‑файлів

Працюючи з папками, що містять велику кількість повідомлень, ви можете використовувати пагінацію для завантаження повідомлень порціями за допомогою start_index і count параметри. Наведений нижче приклад коду демонструє, як отримати доступ і витягти певний діапазон електронних повідомлень з PST‑файлу, а не всі одразу:

import aspose.email as ae

# Load the PST and access the target folder
pst = ae.PersonalStorage.from_file("sample.pst")
inbox = pst.root_folder.get_sub_folder("Inbox")

# Retrieve messages from index 0 to 9
for info in inbox.enumerate_mapi_messages(0, 10):
    print("Paged Message:", info.subject)

Оновити та організувати вміст Outlook PST

Переміщення повідомлень між папками

Aspose.Email дозволяє переміщати елементи з вихідної папки в іншу папку в тому ж файлі Personal Storage (PST). Це включає:

  • Переміщення вказаної папки у нову батьківську папку.
  • Переміщення вказаних повідомлень у нову папку.
  • Переміщення вмісту у нову папку.
  • Переміщення підпапок у нову батьківську папку.

Наступний фрагмент коду показує, як перемістити елементи, такі як повідомлення та папки, з вихідної папки в іншу папку в тому ж PST‑файлі.

Оновлення властивостей повідомлень

Іноді потрібно змінювати певні властивості повідомлень, наприклад змінювати тему, позначати важливість повідомлення тощо. Оновлення цих властивостей у PST‑файлі можна здійснити за допомогою FolderInfo.change_messages метод, наданий Aspose.Email for Python. У цій статті показано процес масового оновлення властивостей повідомлень, що дозволяє автоматично вносити зміни у кількох повідомленнях у PST‑файлі. Нижче наведено фрагмент коду, який ілюструє, як виконати масові оновлення різних властивостей повідомлень.

from aspose.email.storage.pst import PersonalStorage, PersonalStorageQueryBuilder
from aspose.email.mapi import MapiPropertyTag, MapiProperty, MapiPropertyCollection

pst_file_path = data_dir + "ya4demia04vb.pst"

# Load the Outlook PST file
with PersonalStorage.from_file(pst_file_path) as personal_storage:
    # Get the required subfolder
    inbox = personal_storage.root_folder.get_sub_folder("Inbox")

    # Find messages having From = "someuser@domain.com"
    query_builder = PersonalStorageQueryBuilder()
    query_builder.from_address.contains("someuser@domain.com")

    # Get contents from query
    messages = inbox.get_contents(query_builder.get_query())

    # Save (MessageInfo, EntryIdString) in a list
    change_list = [message_info.entry_id_string for message_info in messages]

    # Compose the new properties
    updated_properties = MapiPropertyCollection()
    updated_properties.add(
        MapiPropertyTag.SUBJECT_W,
        MapiProperty(MapiPropertyTag.SUBJECT_W, "New Subject".encode("utf-16le"))
    )
    updated_properties.add(
        MapiPropertyTag.IMPORTANCE,
        MapiProperty(MapiPropertyTag.IMPORTANCE, bytearray([0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]))
    )

    # Update messages having From = "someuser@domain.com" with new properties
    inbox.change_messages(change_list, updated_properties)

Модифікація власних властивостей MAPI

Іноді може знадобитися ідентифікувати та позначити елементи, які були оброблені у PST‑файлі. API Aspose.Email пропонує рішення для цього завдання за допомогою MapiProperty і MapiNamedProperty класи. Ці класи дозволяють позначати оброблені елементи, призначаючи їм власні властивості. Нижче ви знайдете методи, які особливо корисні для виконання цього процесу маркування:

from uuid import UUID
from aspose.email.storage.pst import PersonalStorage
from aspose.email.mapi import MapiNamedProperty, MapiPropertyCollection
from aspose.email.mapi import MapiPropertyType, MapiProperty, MapiPropertyTag

def generate_named_property_tag(index, data_type):
    return (((0x8000 | index) << 16) | data_type) & 0x00000000FFFFFFFF

def run():
    # Load the Outlook file
    pst_file_path = data_dir + "my.pst"

    with PersonalStorage.from_file(pst_file_path) as personal_storage:
        test_folder = personal_storage.root_folder.get_sub_folder("Inbox")

        # Create the collection of message properties for adding or updating
        new_properties = MapiPropertyCollection()

        # Normal, Custom, and PidLidLogFlags named properties
        mapi_property = MapiProperty(
            MapiPropertyTag.ORG_EMAIL_ADDR_W,
            "test_address@org.com".encode("utf-16le")
        )
        named_property1 = MapiNamedProperty(
            generate_named_property_tag(0, MapiPropertyType.LONG),
            "ITEM_ID",
            UUID("00000000-0000-0000-0000-000000000000"),
            bytearray([0x7B, 0x00, 0x00, 0x00])
        )
        named_property2 = MapiNamedProperty(
            generate_named_property_tag(1, MapiPropertyType.LONG),
            0x0000870C,
            UUID("0006200A-0000-0000-C000-000000000046"),
            bytearray([0x00, 0x00, 0x00, 0x00])
        )
        new_properties.add(named_property1.tag, named_property1)
        new_properties.add(named_property2.tag, named_property2)
        new_properties.add(mapi_property.tag, mapi_property)
        test_folder.change_messages(test_folder.enumerate_messages_entry_id(), new_properties)

# Usage
run()

Видалення повідомлень та папок з Outlook PST‑файлів

Керування вмістом Outlook PST‑файлів часто включає видалення непотрібних повідомлень, папок або кількох елементів одночасно. Aspose.Email for Python via .NET надає ефективні методи для видалення повідомлень і папок з PST‑файлу, незалежно від того, чи потрібно видалити окремі листи, FolderInfo.delete_child_item() метод, або виконувати масові видалення, FolderInfo.delete_child_items() метод, для кращого управління файлами.

Видалення повідомлень з PST‑файлів

Aspose.Email надає FolderInfo клас для доступу до конкретних папок у PST‑файлі. Наведений нижче приклад коду демонструє, як використовувати цей клас для доступу та видалення повідомлень із підпапки Sent у раніше завантаженому або створеному PST‑файлі. Зокрема, він отримує кількість повідомлень і видаляє перший елемент у папці "Sent Items".

  1. Об’єкт PST ініціалізується відкриттям файлу "Outlook.pst", що знаходиться у вказаній теці, за допомогою PersonalStorage.from_file().
  2. Папка Sent Items доступна за допомогою pst.get_predefined_folder(StandardIpmFolder.SENT_ITEMS).
  3. Потім код отримує вміст папки "Sent Items" за допомогою folder.get_contents(), рахує їх і виводить загальну кількість повідомлень у цій папці.
  4. Код отримує доступ до першого повідомлення у папці "Sent Items" за допомогою msgsColl[0] і видаляє його за допомогою folder.delete_child_item(msgInfo.entry_id). Ця функція використовує Entry ID повідомлення для його видалення з папки.

Після видалення код знову підраховує повідомлення у папці "Sent Items" і виводить оновлену кількість.

Видалення елементів з PST‑файлів

У багатьох системах обміну повідомленнями чи клієнтах електронної пошти кожному елементу (наприклад, листу, зустрічі чи завданню) присвоюється унікальний ідентифікатор, який називається Entry ID. delete_item(entry_id) метод FolderInfo клас приймає цей Entry ID як параметр і видаляє відповідний елемент зі сховища повідомлень. Використайте наведений код, щоб видалити елемент зі сховища повідомлень:

import aspose.email as ae

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

pst.delete_item(entry_id)

Масове видалення елементів

API Aspose.Email можна використати для масового видалення елементів з PST‑файла. Це здійснюється за допомогою delete_child_items() метод, який приймає список елементів Entry ID, що вказують на елементи, які треба видалити. Наведений нижче фрагмент коду показує, як видалити елементи масово з PST‑файлу.

Видалення папок з PST‑файлів

Файли Outlook PST можуть містити папки, які більше не потрібні. Aspose.Email for Python via .NET дозволяє видаляти ці папки або переміщаючи їх у папку Deleted Items (з можливістю відновлення), або назавжди видаляючи їх. Наведені приклади демонструють обидва підходи.

Перемістити папку у Deleted Items (м’яке видалення)

The move_item метод PersonalStorage клас дозволяє пізніше відновлювати папки, оскільки вони не видаляються назавжди, а переміщуються у папку Deleted Items. Наведений фрагмент коду показує, як впровадити цей метод у Python‑проєкт:

import aspose.email as ae

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

deleted_items_folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.DELETED_ITEMS)
empty_folder = pst.root_folder.get_sub_folder("Empty folder")
some_folder = pst.root_folder.get_sub_folder("Some folder")
pst.move_item(empty_folder, deleted_items_folder)
pst.move_item(some_folder, deleted_items_folder)

Перевага цього методу полягає в тому, що видалена папка може бути легко відновлена.

Відновити папку з Deleted Items

The move_item метод дозволяє відновити папку, якщо її випадково видалено, перемістивши її назад з Deleted Items у початкове розташування.

some_folder = pst.root_folder.get_sub_folder("Some folder")
pst.move_item(some_folder, pst.root_folder)

Назавжди видалити папку з Deleted Items

The delete_child_item метод можна використовувати для будь‑яких папок, якщо ви хочете негайно та назавжди видалити підпапку, минаючи папку Deleted Items. Наведений приклад коду показує, як повністю видалити папку з Deleted Items, роблячи відновлення неможливим:

deleted_items_folder.delete_child_item(empty_folder.entry_id)

Назавжди видалити папку негайно

Якщо папку потрібно видалити без переміщення її у Deleted Items, то delete_child_item метод забезпечує негайне та постійне видалення.

some_folder = pst.root_folder.get_sub_folder("Some folder")
pst.root_folder.delete_child_item(some_folder.entry_id)