Maak en organiseer PST-bestanden in Python
Maak nieuw PST-bestand en voeg submappen toe
Aspose.Email biedt de functionaliteit om Personal Storage Table (PST) bestanden vanaf nul te maken en submappen eraan toe te voegen. Met de PersonalStorage class, kunt u bewerkingen beheren die betrekking hebben op PST-bestanden, die e-mailberichten, agenda‑items, contacten en andere gegevens opslaan.
De volgende codevoorbeeld toont hoe u een nieuw opslagbestand maakt en er een "Inbox" map aan toevoegt:
- Gebruik de PersonalStorage.create methode om een nieuw PST-bestand te genereren met de opgegeven directory. Het bestand wordt aangemaakt met behulp van de
UNICODEformaat voor compatibiliteit met moderne toepassingen. - Open de hoofdmap van het PST-bestand en voeg een nieuwe submap genaamd "Inbox" toe om e-mailberichten te organiseren.
Controle op containerklasse‑overeenkomst
Aspose.Email voor Python biedt een oplossing die het validatieproces bij het aanmaken van mappen in PST‑bestanden verbetert. Met de enforce_container_class_matching eigenschap van de FolderCreationOptions class, kunt u strikte overeenstemming van containerklassen waarborgen bij het toevoegen van een nieuwe map aan de PST‑opslag. Deze functie helpt de organisatiestructuur binnen het PST‑bestand te behouden door mismatches in containerklassen te voorkomen. Door ‘EnforceContainerClassMatching’ op ’true’ te zetten, wordt er een uitzondering gegooid als de containerklassen van de boven‑ en onderliggende mappen niet overeenkomen, wat een bescherming biedt tegen onjuiste mapstructuren. Het standaardgedrag van deze eigenschap is ‘false’, waardoor flexibiliteit bij mapcreatie mogelijk is, terwijl u bij behoefte strikte matching kunt afdwingen.
De volgende codevoorbeeld toont het gebruik van de enforce_container_class_matching eigenschap om te bepalen of er een uitzondering moet worden gegenereerd bij het toevoegen van mappen met niet‑overeenkomende containerklassen:
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"))
Mapcontainerklasse wijzigen
Soms is het nodig om een mapklasse te wijzigen. Een veelvoorkomend voorbeeld is wanneer berichten van verschillende typen (afspraken, berichten, enz.) aan dezelfde map worden toegevoegd. In zulke gevallen moet de mapklasse voor alle elementen in de map worden gewijzigd zodat ze correct worden weergegeven. De onderstaande codefragment toont hoe u de container‑klasse van een map in PST wijzigt voor dit doel:
Berichten in bulk toevoegen met verbeterde prestaties
Het toevoegen van bulk‑berichten aan een PST‑bestand in plaats van ze individueel toe te voegen, kan verschillende voordelen bieden, met name qua efficiëntie en prestaties: minder I/O‑operaties, kortere tijd voor het voltooien van de taak, systeembronnen worden efficiënter benut, enz. De add_messages methode van de FolderInfo class wordt gebruikt om de collectie van MAPI‑berichten verkregen uit de bronmap over te dragen naar de bestemmingsmap.
Berichten toevoegen uit een andere PST
Om alle MAPI‑berichten uit de bronmap van een PST‑bestand te enumereren en op te halen, gebruik de enumerate_mapi_messages() methode van de FolderInfo class. Voeg vervolgens deze berichten toe aan de bestemmingsmap van een ander PST‑bestand.
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())
Berichten toevoegen uit map
Om berichten uit een map toe te voegen, nadat het bestand is geopend en de referentie naar een specifieke map binnen het PST‑bestand is verkregen, haalt u een lijst van bestandsnamen op uit een directory gespecificeerd door de "path" variabele en maakt u een lege MSG‑lijst om elk bestand te laden als een MapiMessage. Voeg elk geladen bericht toe aan de msg_list. De onderstaande codevoorbeeld toont het proces van het toevoegen van berichten uit een directory:
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))