Vytváření a organizace PST souborů v Pythonu

Vytvořit nový PST soubor a přidat podsložky

Aspose.Email poskytuje funkci pro vytvoření souborů Personal Storage Table (PST) od začátku a přidání k nim podsložek. S pomocí PersonalStorage třída, pomocí které můžete spravovat operace související s PST soubory, které ukládají e‑mailové zprávy, kalendářové události, kontakty a další data.

Následující ukázkový kód demonstruje, jak vytvořit nový úložný soubor a přidat do něj složku „Inbox“:

  1. Použijte PersonalStorage.create metoda pro vytvoření nového PST souboru ve specifikovaném adresáři. Soubor je vytvořen pomocí UNICODE formát pro kompatibilitu s moderními aplikacemi.
  2. Přístup ke kořenové složce PST souboru a přidání nové podsložky pojmenované „Inbox“ pro organizaci e‑mailových zpráv.

Kontrola shody tříd kontejnerů

Aspose.Email for Python nabízí řešení, které zlepšuje proces validace při vytváření složek v PST souborech. S vlastností enforce_container_class_matching třídy FolderCreationOptions třída, pomocí které můžete zajistit přísnou shodu tříd kontejnerů při přidávání nové složky do PST úložiště. Tato funkce pomáhá udržovat organizační hierarchii v PST souboru tím, že zabraňuje nesouladu tříd kontejnerů. Nastavením ‘EnforceContainerClassMatching’ na ’true’ bude vyhozena výjimka, pokud se třídy kontejnerů nadřazené a podřízené složky neshodují, což poskytuje ochranu proti nesprávným strukturám složek. Výchozí chování této vlastnosti je ‘false’, což umožňuje flexibilitu při vytváření složek, přičemž můžete v případě potřeby vynutit přísnou shodu tříd kontejnerů.

Následující ukázkový kód demonstruje použití vlastnosti enforce_container_class_matching pro řízení, zda má být vyhozena výjimka při přidávání složek s neodpovídajícími třídami kontejnerů:

with PersonalStorage.create("storage.pst", FileFormatVersion.Unicode) as pst:
    contacts = pst.createpredefinedfolder("Contacts", StandardIpmFolder.Contacts)
    
    # An exception will not arise. EnforceContainerClassMatching is False by default.
    contacts.addsubfolder("Subfolder1", "IPF.Note")
    
    # An exception will occur as the container class of the subfolder being added (IPF.Note)
    # does not match the container class of the parent folder (IPF.Contact).
    contacts.addsubfolder("Subfolder3", FolderCreationOptions(enforcecontainerclassmatching=True, containerclass="IPF.Note"))

Změna třídy kontejneru složky

Někdy je nutné změnit třídu složky. Běžný příklad je, když do stejné složky jsou přidány zprávy různých typů (schůzky, zprávy atd.). V takových případech je potřeba změnit třídu složky pro všechny prvky, aby se správně zobrazovaly. Následující ukázka kódu ukazuje, jak změnit třídu kontejneru složky v PST pro tento účel:

Přidat hromadné zprávy s vylepšeným výkonem

Přidání hromadných zpráv do PST souboru na rozdíl od individuálního přidávání může nabídnout několik výhod, zejména v oblasti efektivity a výkonu: méně I/O operací, kratší doba dokončení úkolu, efektivnější využití systémových prostředků atd. Metoda add_messages třídy FolderInfo třída slouží k přenosu kolekce MAPI zpráv získaných ze zdrojové složky do cílové složky.

Přidat zprávy z jiného PST

Pro výčet a načtení všech MAPI zpráv ze zdrojové složky PST souboru použijte metodu enumerate_mapi_messages() třídy FolderInfo třída. Poté přidejte tyto zprávy do cílové složky jiného PST souboru.

import aspose.email as ae

src_pst = ae.storage.pst.PersonalStorage.from_file("source.pst", False)
dest_pst = ae.storage.pst.PersonalStorage.from_file("destination.pst")

# Get the folder by name
src_folder = src_pst.root_folder.get_sub_folder("SomeFolder")
dest_folder = dest_pst.root_folder.get_sub_folder("SomeFolder")

dest_folder.add_messages(src_folder.enumerate_mapi_messages())

Přidat zprávy z adresáře

Pro přidání zpráv z adresáře, po otevření souboru a získání reference na konkrétní složku v PST souboru, získejte seznam názvů souborů z adresáře určeného proměnnou "path" a vytvořte prázdný seznam MSG pro načtení každého souboru jako MapiMessage. Přidejte každou načtenou zprávu do msg_list. Níže uvedený ukázkový kód demonstruje proces přidávání zpráv z adresáře:

import aspose.email as ae
import os

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

# Get the folder by name
folder = pst.root_folder.get_sub_folder("SomeFolder")

dirs = os.listdir("path")
msg_list = []

for file in dirs:
    msg = ae.mapi.MapiMessage.load(file)
    msg_list.append(msg)

folder.add_messages(iter(msg_list))