PST ファイル内の Outlook 配布リストの管理

配布リストとは、自動化ソフトウェアによって操作できる連絡先のグループで、ユーザーが同時に複数の受信者にメールを送信できるようにします。

Aspose.Email for Python API を使用すると、ユーザーは配布リストの作成、管理、操作が可能です。これには、リストからメンバーを作成および保存、配布リストの読み取り、リストプロパティの更新、その他の関連操作が含まれます。

PST ファイル内で配布リストを作成および保存

既存の PST 連絡先を使用した配布リストの追加

以下のコードスニペットは、すでに PST ファイルに保存されている連絡先を含む配布リストの作成方法を示しています。

  1. 次を使用して新しい PST ファイルを作成します: PersonalStorage.create() UNICODE 形式で。
  2. 事前に定義された「Contacts」フォルダーを作成し、2つの連絡先エントリ(Sebastian Wright と Wichert Kroos)をそのフォルダーに追加します。
  3. 配布リストに連絡先を追加します:
    • 各連絡先は配布リストに次のように追加されます: MapiDistributionListMember.
    • 各メンバーの entry_id は、エンコードされた strEntryId を使用して対応する PST 連絡先にリンクされています。
  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」という名前の配布リストを作成し、PST ファイルの「Contacts」フォルダーに追加します。
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)