Skapa och organisera PST‑filer i Python
Skapa ny PST‑fil och lägg till undermappar
Aspose.Email tillhandahåller funktionalitet för att skapa Personal Storage Table (PST)-filer från grunden och lägga till undermappar i dem. Med PersonalStorage klass, du kan hantera operationer relaterade till PST‑filer, som lagrar e‑postmeddelanden, kalenderhändelser, kontakter och annan data.
Följande kodexempel visar hur du skapar en ny lagringsfil och lägger till en "Inbox"‑mapp i den:
- Använd PersonalStorage.create metod för att generera en ny PST‑fil i den angivna katalogen. Filen skapas med hjälp av
UNICODEformat för kompatibilitet med moderna applikationer. - Kom åt rotmappen i PST‑filen och lägg till en ny undermapp med namnet "Inbox" för att organisera e‑postmeddelanden.
Kontroll av containerklassmatchning
Aspose.Email för Python erbjuder en lösning som förbättrar valideringsprocessen vid skapande av mappar i PST‑filer. Med egenskapen enforce_container_class_matching i FolderCreationOptions klass, du kan säkerställa strikt matchning av containerklasser när du lägger till en ny mapp i PST‑lagringen. Denna funktion hjälper till att upprätthålla den organisatoriska hierarkin i PST‑filen genom att förhindra missmatchningar i containerklasser. Genom att sätta ‘EnforceContainerClassMatching’ till ’true’ kastas ett undantag om containerklasserna för föräldra- och barnmapparna inte matchar, vilket ger ett skydd mot felaktiga mappstrukturer. Standardbeteendet för denna egenskap är ‘false’, vilket ger flexibilitet vid mappskapande samtidigt som du kan tvinga på strikt matchning av containerklasser när det behövs.
Följande kodexempel demonstrerar användningen av egenskapen enforce_container_class_matching för att styra om ett undantag ska kastas när mappar med olika containerklasser läggs till:
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"))
Ändra mappars containerklass
Ibland är det nödvändigt att ändra en mappklass. Ett vanligt exempel är när meddelanden av olika typer (möten, meddelanden osv.) läggs till i samma mapp. I sådana fall måste mappklassen ändras för alla element i mappen för att de ska visas korrekt. Följande kodexempel visar hur du ändrar containerklassen för en mapp i en PST för detta ändamål:
Lägg till meddelanden i bulk med förbättrad prestanda
Att lägga till massmeddelanden i en PST‑fil i stället för att lägga till dem enskilt kan erbjuda flera fördelar, särskilt när det gäller effektivitet och prestanda: färre I/O‑operationer, minskad tid för att slutföra uppgiften, systemresurser utnyttjas mer effektivt osv. Metoden add_messages i FolderInfo klass används för att överföra samlingen av MAPI‑meddelanden som erhållits från källmappen till destinationsmappen.
Lägg till meddelanden från en annan PST
För att räkna upp och hämta alla MAPI‑meddelanden från källmappen i en PST‑fil, använd metoden enumerate_mapi_messages() i FolderInfo klass. Lägg sedan till dessa meddelanden i destinationsmappen i en annan PST‑fil.
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())
Lägg till meddelanden från katalog
För att lägga till meddelanden från en katalog, efter att filen har öppnats och referensen till en specifik mapp i PST‑filen har erhållits, hämta en lista med filnamn från en katalog som anges av variabeln "path" och skapa en tom MSG‑lista för att ladda varje fil som ett MapiMessage. Lägg till varje laddat meddelande i msg_list. Kodexemplet nedan demonstrerar processen för att lägga till meddelanden från en katalog:
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))