Arbeiten mit Verteilerlisten in PST-Datei

Eine Verteilerliste ist eine Gruppe von Kontakten, die von automatisierter Software verarbeitet werden kann, sodass der Benutzer E-Mails gleichzeitig an mehrere Empfänger senden kann.

Die Aspose.Email-Software ermöglicht es Benutzern, Verteilerlisten zu erstellen, zu verwalten und zu manipulieren. Dazu gehört das Erstellen und Speichern von Mitgliedern aus der Liste, das Lesen von Verteilerlisten, das Aktualisieren von Listeneigenschaften und weitere verwandte Vorgänge.

Erstellen und Speichern von Verteilerlisten

Erstellen und speichern Sie eine Verteilerliste wie im folgenden Codebeispiel gezeigt:

import base64

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 = base64.b64decode(strEntryId1)

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

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)
import base64

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)

Lesen von Verteilerlisten aus PST

Um eine Verteilerliste aus einer PST zu lesen, verwenden Sie das folgende Codebeispiel:

import aspose.email as ae
import aspose.pycore as pycore

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 = pycore.cast(ae.mapi.MapiDistributionList, 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}")

Aktualisieren von Verteilerlisten in PST

Um eine Verteilerliste in einer PST‑Datei zu aktualisieren, z. B. ein neues Mitglied hinzuzufügen, verwenden Sie das folgende Codebeispiel:

import aspose.email as ae
import aspose.pycore as pycore

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 = pycore.cast(ae.mapi.MapiDistributionList, pst.extract_message(msg).to_mapi_message_item())

        # The collection returned by the members property is detached from the
        # message, so rebuild it to make the change persistent
        members = ae.mapi.MapiDistributionListMemberCollection()
        for existing_member in dist_list.members:
            members.append(ae.mapi.MapiDistributionListMember(existing_member.display_name, existing_member.email_address))

        # Create new member to add
        members.append(ae.mapi.MapiDistributionListMember("Edward R. Manuel", "EdwardRManuel@example.com"))

        # update DL in PST
        folder.update_message(msg.entry_id_string, ae.mapi.MapiDistributionList(dist_list.display_name, members))