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“:
- Použijte PersonalStorage.create metoda pro vytvoření nového PST souboru ve specifikovaném adresáři. Soubor je vytvořen pomocí
UNICODEformát pro kompatibilitu s moderními aplikacemi. - 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))