Twórz i organizuj pliki PST w Pythonie
Utwórz nowy plik PST i dodaj podfoldery
Aspose.Email udostępnia funkcję tworzenia plików Personal Storage Table (PST) od podstaw i dodawania do nich podfolderów. Z PersonalStorage klasa, dzięki której możesz zarządzać operacjami związanymi z plikami PST, które przechowują wiadomości e‑mail, wydarzenia kalendarza, kontakty i inne dane.
Poniższy przykład kodu pokazuje, jak stworzyć nowy plik przechowywania i dodać do niego folder "Inbox":
- Użyj PersonalStorage.create metoda do wygenerowania nowego pliku PST w określonym katalogu. Plik jest tworzony przy użyciu
UNICODEformat dla zgodności z nowoczesnymi aplikacjami. - Uzyskaj dostęp do folderu głównego pliku PST i dodaj nowy podfolder o nazwie "Inbox", aby uporządkować wiadomości e‑mail.
Sprawdzanie dopasowania klasy kontenera
Aspose.Email for Python oferuje rozwiązanie, które usprawnia proces walidacji podczas tworzenia folderów w plikach PST. Dzięki właściwości enforce_container_class_matching w FolderCreationOptions klasa, dzięki której możesz zapewnić ścisłe dopasowanie klas kontenerów przy dodawaniu nowego folderu do magazynu PST. Ta funkcja pomaga utrzymać hierarchię organizacyjną w pliku PST, zapobiegając niezgodnościom klas kontenerów. Ustawiając ‘EnforceContainerClassMatching’ na ’true’, zostanie zgłoszony wyjątek, jeśli klasy kontenerów folderów nadrzędnego i podrzędnego nie będą się zgadzać, co zapewnia ochronę przed nieprawidłowymi strukturami folderów. Domyślne zachowanie tej właściwości to ‘false’, co pozwala na elastyczność przy tworzeniu folderów, a jednocześnie umożliwia wymuszenie ścisłego dopasowania klas kontenerów w razie potrzeby.
Poniższy przykład kodu demonstruje użycie właściwości enforce_container_class_matching w celu określenia, czy ma być zgłaszany wyjątek przy dodawaniu folderów o niepasujących klasach kontenerów:
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"))
Zmiana klasy kontenera folderu
Czasami konieczne jest zmienienie klasy folderu. Powszechnym przykładem jest sytuacja, gdy do jednego folderu dodawane są wiadomości różnych typów (spotkania, wiadomości itp.). W takich przypadkach klasa folderu musi być zmieniona dla wszystkich elementów, aby prawidłowo się wyświetlały. Poniższy fragment kodu pokazuje, jak zmienić klasę kontenera folderu w PST w tym celu:
Dodaj wiadomości hurtowo z ulepszoną wydajnością
Dodawanie wiadomości hurtowo do pliku PST, w przeciwieństwie do dodawania ich pojedynczo, może przynieść kilka korzyści, szczególnie pod względem wydajności i efektywności: mniej operacji I/O, skrócony czas realizacji zadania, bardziej efektywne wykorzystanie zasobów systemowych itp. Metoda add_messages klasy FolderInfo klasa jest używana do przeniesienia kolekcji wiadomości MAPI uzyskanych z folderu źródłowego do folderu docelowego.
Dodaj wiadomości z innego PST
Aby wyliczyć i pobrać wszystkie wiadomości MAPI z folderu źródłowego pliku PST, użyj metody enumerate_mapi_messages() klasy FolderInfo klasa. Następnie dodaj te wiadomości do folderu docelowego innego pliku PST.
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())
Dodaj wiadomości z katalogu
Aby dodać wiadomości z katalogu, po otwarciu pliku i uzyskaniu odwołania do określonego folderu w pliku PST, pobierz listę nazw plików z katalogu określonego zmienną "path" i utwórz pustą listę MSG, aby wczytać każdy plik jako MapiMessage. Dodaj każdą wczytaną wiadomość do msg_list. Poniższy przykład kodu demonstruje proces dodawania wiadomości z katalogu:
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))