Управление контактами Outlook в PST-файлах

Добавить контакты Outlook в PST‑файлы

Создать новый PST‑файл и добавить подпапки демонстрирует, как создать PST‑файл и включить в него подпапки. С помощью Aspose.Email можно добавить MapiContact в подпапку Contacts PST‑файла, который вы создали или загрузили. Ниже приведены шаги по добавлению MapiContact в PST‑файл:

  1. Создайте MapiContact объекта.
  2. Установите свойства MapiContact, такие как имя, пол, адреса электронной почты, телефонные номера, физические адреса и профессиональная информация, используя различные конструкторы и методы.
  3. Создайте PST с помощью PersonalStorage.create() метод.
  4. Создайте предопределённую папку (Contacts) в корне файла PST, получив доступ к корневой папке и затем вызвав add_mapi_message_item() метод.

Следующий фрагмент кода показывает, как создать контакт MAPI и затем добавить его в папку Contacts только что созданного PST‑файла:

Сохранить контакты Outlook как файлы MSG

Чтобы получить доступ к информации о контактах из PST‑файла Outlook и сохранить контакт на диск в формате MSG, Aspose.Email предоставляет PersonalStorage и MapiContact классов. Приведённый ниже фрагмент кода показывает, как извлечь всю информацию о контактах из PST‑файла и сохранить её на диск в формате MSG:

  1. Загрузить PST‑файл в PersonalStorage класс.
  2. Просмотреть папку Contacts.
  3. Получить содержимое папки Contacts, чтобы получить коллекцию сообщений.
  4. Перебрать коллекцию сообщений.
  5. Вызвать PersonalStorage.extract_message() метод для получения информации о контакте в MapiMessage класс.
  6. Вызвать MapiMessage.save() метод для сохранения контакта на диск в формате MSG.

Экспортировать контакты Outlook как файлы VCF

Чтобы получить доступ к информации о контактах из PST‑файла Microsoft Outlook и сохранить контакт на диск в формате vCard (VCF), используйте PersonalStorage и MapiContact классов. Код ниже загружает PST‑файл с диска и сохраняет все контакты в формате vCard (VCF). Файлы VCF затем могут быть использованы в любой другой программе, которая умеет загружать стандартный файл контактов vCard. Если открыть любой VCF‑файл в Microsoft Outlook, он выглядит как в скриншоте ниже.

todo:image_alt_text

Следующий фрагмент кода показывает, как экспортировать контакты из Outlook PST в формат vCard (VCF):

  1. Использовать PersonalStorage.from_file для открытия PST‑файла.
  2. Получить доступ к папке Contacts с помощью get_sub_folder.
  3. Перебор контактов:
    • Использовать get_contents() чтобы получить всю информацию о сообщениях в папке.
    • Перебрать message_info_collection в цикле.
  4. Извлечь каждый контакт с помощью pst.extract_message(message_info) и сохранить его как элемент сообщения MAPI.
  5. Вывести имя и entry ID каждого контакта.
  6. Сохранить контакт как файл VCF с помощью contact.save.
from aspose.email.storage.pst import PersonalStorage
from aspose.email.mapi import ContactSaveFormat

# Load the Outlook PST file
pst = PersonalStorage.from_file("my.pst")

# Get the Contacts folder
folder_info = pst.root_folder.get_sub_folder("Contacts")

# Loop through all the contacts in this folder
message_info_collection = folder_info.get_contents()
for message_info in message_info_collection:
    # Get the contact information
    contact = pst.extract_message(message_info).to_mapi_message_item()

    # Display some contents on screen
    print("Name: " + contact.name_info.display_name + " - " + message_info.entry_id_string)

    # Save to disk in vCard VCF format
    contact.save("D:\\" + contact.name_info.display_name + ".vcf", ContactSaveFormat.V_CARD)

Управление списками рассылки Outlook в PST‑файлах

Aspose.Email для Python API позволяет создавать списки рассылки — коллекцию нескольких контактов. Список рассылки можно сохранить на диск в формате Outlook MSG и просматривать/обрабатывать, открыв его в MS Outlook.

Создать и сохранить списки рассылки

Ниже приведённый фрагмент кода демонстрирует, как создать PST‑файл и добавить список рассылки. Также он включает создание и добавление контактов в список рассылки внутри PST‑файла.

  1. Определить детали контакта — задать displayName и email для каждого контакта.
  2. Создайте новый PST‑файл с помощью PersonalStorage.create() в формате UNICODE.
  3. Создать папку Contacts с помощью create_predefined_folder().
  4. Создать экземпляр MapiContact объекты с отображаемым именем и электронным адресом, затем добавить контакты в папку с помощью add_mapi_message_item().
  5. Создать участников списка рассылки, создав экземпляр MapiDistributionListMember для каждого контакта и устанавливая entry_id с помощью base64‑декодирования.
  6. Добавить участников в MapiDistributionListMemberCollection.
  7. Создать список рассылки, создав экземпляр MapiDistributionList, устанавливая её тело и тему.
  8. Использовать add_mapi_message_item() чтобы добавить список рассылки в папку контактов.
displayName1 = "Sebastian Wright"
email1 = "SebastianWright@dayrep.com"

displayName2 = "Wichert Kroos"
email2 = "WichertKroos@teleworm.us"

personalStorage = PersonalStorage.create(dataDir + "CreateDistributionListInPST_out.pst", FileFormatVersion.UNICODE)

contactFolder = personalStorage.create_predefined_folder("Contacts", StandardIpmFolder.CONTACTS)

   # Create contacts
   strEntryId1 = contactFolder.add_mapi_message_item(MapiContact(displayName1, email1))
   strEntryId2 = contactFolder.add_mapi_message_item( MapiContact(displayName2, email2))

   member1 = MapiDistributionListMember(displayName1, email1)
   member1.entry_id_type = MapiDistributionListEntryIdType.CONTACT
   member1.entry_id = base64.b64decode( bytes(strEntryId1, "utf-8") )

   member2 = MapiDistributionListMember(displayName2, email2)
   member2.entry_id_type = MapiDistributionListEntryIdType.CONTACT
   member2.entry_id = base64.b64decode( bytes(strEntryId1, "utf-8") )

   members = MapiDistributionListMemberCollection()
   members.append(member1)
   members.append(member2)

   distribution_list = MapiDistributionList("Contact list", members)
   distribution_list.body = "Distribution List Body"
   distribution_list.subject = "Sample Distribution List using Aspose.Email"     
                    
   # Add distribution list to PST 
   contactFolder.add_mapi_message_item(distribution_list);

Чтение списков рассылки из файлов PST

Следующий фрагмент кода показывает, как прочитать список рассылки из PST‑файла:

from aspose.email.mapi import MapiMessage

# Load the MAPI message from file
message = MapiMessage.load("dl.msg")

# Convert the message to MAPI distribution list
dlist = message.to_mapi_message_item()

Обновить списки рассылки в PST‑файлах Outlook

Чтобы обновить список рассылки в файле PST, например добавить нового участника, используйте следующий пример кода:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("my.pst")

folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.CONTACTS)

# Add a new member to each distribution list in pst
for msg in folder.enumerate_messages():
    # Check if the message has the "IPM.DistList" message class
    if msg.message_class == "IPM.DistList":
        dist_list = pst.extract_message(msg).to_mapi_message_item()
        # Create a new member to add
        member = ae.mapi.MapiDistributionListMember("Edward R. Manuel", "EdwardRManuel@example.com")
        dist_list.members.append(member)
        # Update DL in PST
        folder.update_message(msg.entry_id_string, dist_list)