在 PST 文件中管理 Outlook 联系人

向 PST 文件添加 Outlook 联系人

创建新 PST 文件并添加子文件夹 演示如何创建 PST 文件并在其中包含子文件夹。使用 Aspose.Email,您可以将 MapiContact 添加到已创建或已加载的 PST 文件的 Contacts 子文件夹中。以下是向 PST 文件添加 MapiContact 的步骤:

  1. 创建一个 MapiContact 对象。
  2. 使用不同的构造函数和方法设置 MapiContact 属性,例如姓名、性别、电子邮件地址、电话号码、物理地址和职业信息。
  3. 使用 PersonalStorage.create() 方法。
  4. 通过访问根文件夹,然后调用 add_mapi_message_item() 方法。

以下代码片段展示了如何创建一个 MAPI 联系人并将其添加到新创建的 PST 文件的 Contacts 文件夹中:

将 Outlook 联系人另存为 MSG 文件

要访问 Outlook PST 文件中的联系信息并以 MSG 格式保存到磁盘,Aspose.Email 提供了 PersonalStorage 以及 MapiContact 类。下面的代码片段展示了如何从 PST 文件检索所有联系信息并以 MSG 格式保存到磁盘:

  1. 在加载 PST 文件的 PersonalStorage 类。
  2. 浏览 Contacts 文件夹。
  3. 获取 Contacts 文件夹的内容以获取邮件集合。
  4. 遍历邮件集合。
  5. 调用 PersonalStorage.extract_message() 获取联系人信息的方法 MapiMessage 类。
  6. 调用 MapiMessage.save() 方法将联系人保存为 MSG 格式到磁盘。

将 Outlook 联系人导出为 VCF 文件

要访问 Microsoft Outlook PST 文件中的联系信息并将联系人保存为 vCard(VCF)格式,请使用 PersonalStorageMapiContact 类。下面的代码从磁盘加载 PST 文件并将所有联系人保存为 vCard(VCF)格式。这些 VCF 文件可以在任何能够加载标准 vCard 联系人文件的程序中使用。如果在 Microsoft Outlook 中打开任意 VCF 文件,它会显示如下截图所示的内容。

todo:image_alt_text

以下代码片段展示了如何将 Outlook PST 中的联系人导出为 vCard(VCF)格式:

  1. 使用 PersonalStorage.from_file 打开 PST 文件。
  2. 使用 … 访问 Contacts 文件夹 get_sub_folder.
  3. 遍历联系人:
  4. 使用 … 提取每个联系人 pst.extract_message(message_info) 并将其作为 MAPI 消息项存储。
  5. 打印每个联系人的名称和 entry ID。
  6. 使用 … 将联系人保存为 VCF 文件 contact.save.
from aspose.email.storage.pst import PersonalStorage
from aspose.email.mapi import ContactSaveFormat

# Load the Outlook PST file
pst = PersonalStorage.from_file("my.pst")

# Get the Contacts folder
folder_info = pst.root_folder.get_sub_folder("Contacts")

# Loop through all the contacts in this folder
message_info_collection = folder_info.get_contents()
for message_info in message_info_collection:
    # Get the contact information
    contact = pst.extract_message(message_info).to_mapi_message_item()

    # Display some contents on screen
    print("Name: " + contact.name_info.display_name + " - " + message_info.entry_id_string)

    # Save to disk in vCard VCF format
    contact.save("D:\\" + contact.name_info.display_name + ".vcf", ContactSaveFormat.V_CARD)

在 PST 文件中管理 Outlook 分发列表

Aspose.Email for Python API 使得创建分发列表成为可能——这是多个联系人的集合。分发列表可以保存为 Outlook MSG 格式的文件,并可通过在 MS Outlook 中打开进行查看/操作。

创建并保存通讯组列表

下面的代码片段演示了如何创建 PST 文件并添加分发列表。它还涉及在 PST 文件内创建并添加联系人到分发列表中。

  1. 定义联系详情——为每个联系人设置 displayName 和 email。
  2. 使用以下方式创建新 PST 文件 PersonalStorage.create() 使用 UNICODE 格式。
  3. 使用 … 创建 Contacts 文件夹 create_predefined_folder().
  4. 实例化 MapiContact 对象,包含显示名称和电子邮件,然后使用 … 将联系人添加到文件夹中 add_mapi_message_item().
  5. 通过实例化创建分发列表成员 MapiDistributionListMember 针对每个联系人,并使用 base64 解码设置 entry_id。
  6. 向 … 添加成员 MapiDistributionListMemberCollection.
  7. 通过实例化创建分发列表 MapiDistributionList,设置其正文和主题。
  8. 使用 add_mapi_message_item() 将分发列表添加到联系人文件夹。
displayName1 = "Sebastian Wright"
email1 = "SebastianWright@dayrep.com"

displayName2 = "Wichert Kroos"
email2 = "WichertKroos@teleworm.us"

personalStorage = PersonalStorage.create(dataDir + "CreateDistributionListInPST_out.pst", FileFormatVersion.UNICODE)

contactFolder = personalStorage.create_predefined_folder("Contacts", StandardIpmFolder.CONTACTS)

   # Create contacts
   strEntryId1 = contactFolder.add_mapi_message_item(MapiContact(displayName1, email1))
   strEntryId2 = contactFolder.add_mapi_message_item( MapiContact(displayName2, email2))

   member1 = MapiDistributionListMember(displayName1, email1)
   member1.entry_id_type = MapiDistributionListEntryIdType.CONTACT
   member1.entry_id = base64.b64decode( bytes(strEntryId1, "utf-8") )

   member2 = MapiDistributionListMember(displayName2, email2)
   member2.entry_id_type = MapiDistributionListEntryIdType.CONTACT
   member2.entry_id = base64.b64decode( bytes(strEntryId1, "utf-8") )

   members = MapiDistributionListMemberCollection()
   members.append(member1)
   members.append(member2)

   distribution_list = MapiDistributionList("Contact list", members)
   distribution_list.body = "Distribution List Body"
   distribution_list.subject = "Sample Distribution List using Aspose.Email"     
                    
   # Add distribution list to PST 
   contactFolder.add_mapi_message_item(distribution_list);

从 PST 文件读取通讯组列表

以下代码片段展示了如何从 PST 文件读取分发列表:

from aspose.email.mapi import MapiMessage

# Load the MAPI message from file
message = MapiMessage.load("dl.msg")

# Convert the message to MAPI distribution list
dlist = message.to_mapi_message_item()

更新 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 a 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)