Керування списками розподілення Outlook у файлах PST

Список розсилки — це група контактів, яку можна обробляти автоматизованим програмним забезпеченням, що дозволяє користувачеві надсилати електронні листи кільком одержувачам одночасно.

Aspose.Email для Python API дозволяє користувачам створювати, керувати та маніпулювати списками розповсюдження. Це включає створення та збереження учасників списку, читання списків розповсюдження, оновлення властивостей списку та інші пов’язані операції.

Створити та зберегти списки розповсюдження у файлах PST

Додати список розповсюдження з існуючими контактами PST

Нижче наведений фрагмент коду демонструє, як створити список розповсюдження, що містить контакти, які вже збережені у файлі PST.

  1. Створіть новий PST‑файл за допомогою PersonalStorage.create() у форматі UNICODE.
  2. Створіть попередньо визначену папку "Contacts" і додайте до неї два записи контактів (Sebastian Wright та Wichert Kroos).
  3. Додати контакти до списку розповсюдження:
    • Кожен контакт додається до списку розповсюдження як MapiDistributionListMember.
    • entry_id кожного учасника пов’язується з відповідним контактом PST за допомогою кодуваного strEntryId.
  4. Створіть список розповсюдження з назвою "Contact list", який включає додані контакти як учасників, і додайте його до файлу PST.
import aspose.email as ae

displayName1 = "Sebastian Wright"
email1 = "SebastianWright@dayrep.com"

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

pst = ae.storage.pst.PersonalStorage.create("target.pst", ae.storage.pst.FileFormatVersion.UNICODE)

contactFolder = pst.create_predefined_folder("Contacts", ae.storage.pst.StandardIpmFolder.CONTACTS)

strEntryId1 = contactFolder.add_mapi_message_item(ae.mapi.MapiContact(displayName1, email1))
strEntryId2 = contactFolder.add_mapi_message_item(ae.mapi.MapiContact(displayName2, email2))

member1 = ae.mapi.MapiDistributionListMember(displayName1, email1)
member1.entry_id_type = ae.mapi.MapiDistributionListEntryIdType.CONTACT
member1.entry_id = strEntryId1.encode()

member2 = ae.mapi.MapiDistributionListMember(displayName2, email2)
member2.entry_id_type = ae.mapi.MapiDistributionListEntryIdType.CONTACT
member2.entry_id = strEntryId2.encode()

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

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

Додати список розповсюдження з одноразовими учасниками

Одноразові учасники підходять, коли контакти не входять до адресної книги Outlook, але їх все ж потрібно включити до списку розповсюдження. Наведений нижче зразок коду демонструє, як створити список розповсюдження з одноразовими учасниками — контактами, які не зберігаються у файлі PST.

  1. Створіть новий PST‑файл за допомогою PersonalStorage.create() у форматі UNICODE.
  2. Замість прив’язки контактів з PST, визначте нові записи контактів (John R. Patrick та Tilly Bates) безпосередньо як одноразових учасників.
  3. Додайте одноразових учасників до списку розповсюдження.
  4. Створіть список розповсюдження з назвою "Simple list" і додайте його до папки "Contacts" у файлі PST.
import aspose.email as ae

displayName1 = "Sebastian Wright"
email1 = "SebastianWright@dayrep.com"

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

pst = ae.storage.pst.PersonalStorage.create("target.pst", ae.storage.pst.FileFormatVersion.UNICODE)

contact_folder = pst.create_predefined_folder("Contacts", ae.storage.pst.StandardIpmFolder.CONTACTS)

one_off_members = ae.mapi.MapiDistributionListMemberCollection()
one_off_members.append(ae.mapi.MapiDistributionListMember("John R. Patrick", "JohnRPatrick@armyspy.com"))
one_off_members.append(ae.mapi.MapiDistributionListMember("Tilly Bates", "TillyBates@armyspy.com"))

one_off_members_list = ae.mapi.MapiDistributionList("Simple list", one_off_members)
contact_folder.add_mapi_message_item(one_off_members_list)

Прочитати списки розсилки з файлів PST

Щоб перечитати список розсилки з 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)

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()
        # Now, you can work with the distribution list
        # (e.g., access its members, display its properties, or make modifications)
        for member in dist_list.members:
            print(f"{member.display_name}")

Оновити списки розсилки у Outlook PST‑файлах

Щоб оновити список розсилки у файлі 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 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)