إدارة قوائم التوزيع في Outlook داخل ملفات PST

قائمة التوزيع هي مجموعة من جهات الاتصال يمكن تعديلها بواسطة برنامج آلي يتيح للمستخدم إرسال رسائل بريد إلكتروني إلى عدة مستلمين في آن واحد.

يوفر Aspose.Email لواجهة برمجة تطبيقات Python للمستخدمين القدرة على إنشاء وإدارة ومعالجة قوائم التوزيع. يشمل ذلك إنشاء وحفظ الأعضاء من القائمة، قراءة قوائم التوزيع، تحديث خصائص القائمة، وغيرها من العمليات ذات الصلة.

إنشاء وحفظ قوائم التوزيع في ملفات PST

إضافة قائمة توزيع بجهات اتصال PST موجودة

يوضح مقتطف الشيفرة أدناه كيفية إنشاء قائمة توزيع تحتوي على جهات اتصال مخزنة بالفعل في ملف PST.

  1. أنشئ ملف PST جديد باستخدام PersonalStorage.create() بتنسيق UNICODE.
  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() بتنسيق UNICODE.
  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}")

تحديث قوائم التوزيع في ملفات Outlook 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)

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