Управление списками рассылки Outlook в PST‑файлах
Список рассылки — это группа контактов, которой можно управлять с помощью автоматизированного программного обеспечения, позволяющего пользователю отправлять электронные письма нескольким получателям одновременно.
API Aspose.Email для Python позволяет пользователям создавать, управлять и изменять списки рассылки. Это включает создание и сохранение участников списка, чтение списков рассылки, обновление свойств списка и другие связанные операции.
Создание и сохранение списков рассылки в PST‑файлах
Добавить список рассылки с существующими PST‑контактами
Приведённый ниже фрагмент кода демонстрирует, как создать список рассылки, содержащий контакты, уже сохранённые в PST‑файле.
- Создайте новый PST‑файл с помощью PersonalStorage.create() в формате UNICODE.
- Создайте предопределённую папку "Contacts" и добавьте в неё две записи контактов (Sebastian Wright и Wichert Kroos).
- Добавить контакты в список рассылки:
- Каждый контакт добавляется в список рассылки как MapiDistributionListMember.
- entry_id каждого участника связывается с соответствующим контактом PST с помощью закодированного strEntryId.
- Создайте список рассылки с названием "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‑файле.
- Создайте новый PST‑файл с помощью PersonalStorage.create() в формате UNICODE.
- Вместо привязки контактов из PST определите новые записи контактов (John R. Patrick и Tilly Bates) непосредственно как одноразовых участников.
- Добавьте одноразовых участников в список рассылки.
- Создайте список рассылки с именем "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)