Zarządzanie listami dystrybucyjnymi Outlook w plikach PST

Lista dystrybucyjna to grupa kontaktów, którą można manipulować przy pomocy oprogramowania automatycznego, umożliwiając użytkownikowi wysyłanie e‑maili do wielu odbiorców jednocześnie.

API Aspose.Email dla Pythona umożliwia użytkownikom tworzenie, zarządzanie i manipulowanie listami dystrybucyjnymi. Obejmuje to tworzenie i zapisywanie członków listy, odczytywanie list dystrybucyjnych, aktualizowanie właściwości listy oraz inne powiązane operacje.

Utwórz i zapisz listy dystrybucyjne w plikach PST

Dodaj listę dystrybucyjną z istniejącymi kontaktami PST

Poniższy fragment kodu pokazuje, jak utworzyć listę dystrybucyjną zawierającą kontakty, które już są przechowywane w pliku PST.

  1. Utwórz nowy plik PST przy użyciu PersonalStorage.create() w formacie UNICODE.
  2. Utwórz predefiniowany folder "Contacts" i dodaj do niego dwa wpisy kontaktów (Sebastian Wright i Wichert Kroos).
  3. Dodaj kontakty do listy dystrybucyjnej:
    • Każdy kontakt jest dodawany do listy dystrybucyjnej jako MapiDistributionListMember.
    • Identyfikator entry_id każdego członka jest powiązany z odpowiadającym kontaktem PST przy użyciu zakodowanego strEntryId.
  4. Utwórz listę dystrybucyjną o nazwie "Contact list", która zawiera dodane kontakty jako członków, i dodaj ją do pliku 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)

Dodaj listę dystrybucyjną z jednorazowymi członkami

Jednorazowi członkowie są przydatni, gdy kontakty nie są częścią książki adresowej Outlook, ale muszą być uwzględnione na liście dystrybucyjnej. Poniższy przykład kodu pokazuje, jak utworzyć listę dystrybucyjną z jednorazowymi członkami — kontaktami, które nie są przechowywane w pliku PST.

  1. Utwórz nowy plik PST przy użyciu PersonalStorage.create() w formacie UNICODE.
  2. Zamiast łączyć kontakty z PST, zdefiniuj nowe wpisy kontaktów (John R. Patrick i Tilly Bates) bezpośrednio jako jednorazowych członków.
  3. Dodaj jednorazowych członków do listy dystrybucyjnej.
  4. Utwórz listę dystrybucyjną o nazwie "Simple list" i dodaj ją do folderu "Contacts" w pliku 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)

Odczytaj listy dystrybucyjne z plików PST

Aby odczytać listę dystrybucyjną z PST, użyj poniższego przykładu kodu:

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}")

Aktualizuj listy dystrybucyjne w plikach Outlook PST

Aby zaktualizować listę dystrybucyjną w pliku PST, na przykład dodać nowego członka, użyj poniższego przykładu kodu:

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)