مدیریت فهرست توزیع Outlook در فایل‌های PST

یک لیست توزیعی گروهی از مخاطبان است که می‌تواند توسط نرم‌افزارهای خودکار دستکاری شود و به کاربر امکان ارسال ایمیل به چندین گیرنده به‌صورت همزمان را می‌دهد.

API Aspose.Email برای Python به کاربران امکان ایجاد، مدیریت و دستکاری فهرست‌های توزیع را می‌دهد. این شامل ایجاد و ذخیرهٔ اعضا از فهرست، خواندن فهرست‌های توزیع، به‌روزرسانی ویژگی‌های فهرست و سایر عملیات مرتبط است.

ایجاد و ذخیره فهرست‌های توزیع در فایل‌های PST

اضافه کردن فهرست توزیع با مخاطبین موجود در PST

قطعه کد زیر نشان می‌دهد چگونه فهرست توزیعی شامل مخاطبینی که از قبل در فایل PST ذخیره شده‌اند، ایجاد شود.

  1. یک فایل PST جدید ایجاد کنید با استفاده از PersonalStorage.create() با فرمت یونیکد.
  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() با فرمت یونیکد.
  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}")

به‌روزرسانی فهرست توزیع در فایل‌های PST Outlook

برای بروز رسانی فهرست توزیع در یک فایل 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)