Създаване и организиране на PST файлове в Python
Създаване на нов PST файл и добавяне на подпапки
Aspose.Email предоставя функционалност за създаване на Personal Storage Table (PST) файлове от нулата и добавяне на подпапки към тях. С the PersonalStorage class, можете да управлявате операции, свързани с PST файлове, които съхраняват имейл съобщения, календарни събития, контакти и други данни.
Следният примерен код демонстрира как да се създаде нов файл за съхранение и да се добави папка "Inbox" към него:
- Използвайте PersonalStorage.create method за генериране на нов PST файл с указаната директория. Файлът се създава с помощта на the
UNICODEформат за съвместимост с модерни приложения. - Достъп до основната папка на PST файла и добавяне на нова подпапка с име "Inbox", за да се организират имейл съобщенията.
Проверка за съвпадение на класовете на контейнерите
Aspose.Email за Python предлага решение, което подобрява процеса на валидиране при създаване на папки в PST файлове. Съсо свойството enforce_container_class_matching на the FolderCreationOptions class, можете да осигурите стриктно съвпадане на класовете на контейнерите при добавяне на нова папка в PST съхранението. Тази функция помага за поддържане на организационната йерархия в PST файла, като предотвратява несъответствия в класовете на контейнерите. Чрез задаване на ‘EnforceContainerClassMatching’ на ’true’, ще се предизвика изключение, ако класовете на контейнерите на родителската и детската папка не съвпадат, осигурявайки защита срещу неправилни структури на папки. По подразбиране това свойство е ‘false’, което позволява гъвкавост при създаване на папки, като същевременно ви дава възможност да наложите стриктно съвпадане на класовете при необходимост.
Следният примерен код демонстрира използването на свойството enforce_container_class_matching за контролиране дали да се предизвика изключение при добавяне на папки с несъответстващи класове на контейнери:
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"))
Промяна на класа на контейнера на папка
Понякога е необходимо да се промени класът на папка. Често срещан пример е, когато съобщения от различни типове (срещи, съобщения и др.) се добавят в една и съща папка. В такива случаи, класът на папката трябва да се промени за всички елементи, за да се визуализират правилно. Следният примерен код показва как да промените класа на контейнера на папка в PST за тази цел:
Добавяне на масови съобщения с подобрена производителност
Добавянето на големи количества съобщения в PST файл, вместо да се добавят поотделно, може да предложи няколко предимства, особено по отношение на ефективност и производителност: по-малко I/O операции, намалено време за изпълнение, системните ресурси се използват по-ефективно и тн. Методът add_messages на the FolderInfo class се използва за прехвърляне на колекцията от MAPI съобщения, получени от изходната папка, към целевата папка.
Добавяне на съобщения от друг PST
За изброяване и извличане на всички MAPI съобщения от изходната папка на PST файл, използвайте метода enumerate_mapi_messages() на the FolderInfo class. След това добавете тези съобщения в целевата папка на друг 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())
Добавяне на съобщения от директория
За да добавите съобщения от директория, след като файлът е отворен и е получена справка към конкретна папка в PST файла, извлечете списък с имена на файлове от директория, зададена с променливата "path", и създайте празен MSG списък, за да заредите всеки файл като MapiMessage. Прикрепете всяко заредено съобщение към msg_list. Следният примерен код демонстрира процеса на добавяне на съобщения от директория:
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))