Hantera Outlook-distributionslistor i PST-filer

En distributionslista är en grupp kontakter som kan manipuleras av automatiserad programvara, vilket gör att användaren kan skicka e‑post till flera mottagare samtidigt.

Aspose.Email för Python API låter användare skapa, hantera och manipulera distributionslistor. Detta inkluderar att skapa och spara medlemmar från listan, läsa distributionslistor, uppdatera listegenskaper och andra relaterade operationer.

Skapa och spara distributionslistor i PST-filer

Lägg till en distributionslista med befintliga PST-kontakter

Kodsnutten nedan visar hur man skapar en distributionslista som innehåller kontakter som redan är lagrade i en PST-fil.

  1. Skapa en ny PST‑fil med hjälp av PersonalStorage.create() med UNICODE-format.
  2. Skapa en fördefinierad mapp "Contacts" och lägg till två kontaktposter (Sebastian Wright och Wichert Kroos) i den.
  3. Lägg till kontakter i distributionslistan:
    • Varje kontakt läggs till i distributionslistan som en MapiDistributionListMember.
    • Varje medlems entry_id är länkat till motsvarande PST-kontakt med den kodade strEntryId.
  4. Skapa en distributionslista med namnet "Contact list" som inkluderar de tillagda kontakterna som medlemmar, och lägg till den i PST-filen.
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)

Lägg till en distributionslista med engångsmedlemmar

Engångsmedlemmar är lämpliga när kontakterna inte är en del av Outlook-adressboken men ändå måste inkluderas i distributionslistan. Följande kodexempel visar hur man skapar en distributionslista med engångsmedlemmar – kontakter som inte lagras i PST-filen.

  1. Skapa en ny PST‑fil med hjälp av PersonalStorage.create() med UNICODE-format.
  2. Istället för att länka kontakter från PST-filen, definiera nya kontaktposter (John R. Patrick och Tilly Bates) direkt som engångsmedlemmar.
  3. Lägg till engångsmedlemmarna i en distributionslista.
  4. Skapa en distributionslista med namnet "Simple list" och lägg till den i mappen "Contacts" i PST-filen.
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)

Läs distributionslistor från PST‑filer

För att läsa en distributionslista från en PST, använd följande kodexempel:

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

Uppdatera distributionslistor i Outlook PST-filer

För att uppdatera en distributionslista i en PST‑fil, till exempel för att lägga till en ny medlem, använd följande kodexempel:

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)