Робота зі списками розсилки у файлі PST

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

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

Створення та збереження списків розповсюдження

Створіть і збережіть список розсилки, як показано у наведеному нижче прикладі коду:

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)

Читання списків розсилки з PST

Щоб перечитати список розсилки з PST, скористайтеся наведеним прикладом коду:

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

Оновлення списків розсилки у PST

Щоб оновити список розсилки у файлі PST, наприклад додати нового учасника, використайте наступний приклад коду:

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