Administración de listas de distribución de Outlook en archivos PST

Una lista de distribución es un grupo de contactos que puede ser manipulado por software automatizado, lo que permite al usuario enviar correos electrónicos a varios destinatarios simultáneamente.

La API de Aspose.Email para Python permite a los usuarios crear, administrar y manipular listas de distribución. Esto incluye crear y guardar miembros de la lista, leer listas de distribución, actualizar propiedades de la lista y otras operaciones relacionadas.

Crear y guardar listas de distribución en archivos PST

Agregar una lista de distribución con contactos PST existentes

El fragmento de código a continuación muestra cómo crear una lista de distribución que contiene contactos ya almacenados en un archivo PST.

  1. Cree un nuevo archivo PST usando PersonalStorage.create() con formato UNICODE.
  2. Cree una carpeta "Contacts" predefinida y agregue dos entradas de contacto (Sebastian Wright y Wichert Kroos) a esta carpeta.
  3. Agregar contactos a la lista de distribución:
    • Cada contacto se añade a la lista de distribución como un MapiDistributionListMember.
    • El entry_id de cada miembro está vinculado al contacto correspondiente del PST usando el strEntryId codificado.
  4. Cree una lista de distribución llamada "Contact list" que incluya los contactos añadidos como miembros, y agrégela al archivo 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)

Agregar una lista de distribución con miembros temporales

Los miembros temporales son adecuados cuando los contactos no forman parte de la libreta de direcciones de Outlook pero aún necesitan incluirse en la lista de distribución. El siguiente ejemplo de código muestra cómo crear una lista de distribución con miembros temporales — contactos que no están almacenados en el archivo PST.

  1. Cree un nuevo archivo PST usando PersonalStorage.create() con formato UNICODE.
  2. En lugar de enlazar contactos del PST, defina nuevas entradas de contacto (John R. Patrick y Tilly Bates) directamente como miembros temporales.
  3. Agregue los miembros temporales a una lista de distribución.
  4. Cree una lista de distribución, llamada "Simple list", y agrégela a la carpeta "Contacts" en el archivo 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)

Leer listas de distribución de archivos PST

Para leer una lista de distribución desde un PST, use el siguiente ejemplo de código:

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}")

Actualizar listas de distribución en archivos PST de Outlook

Para actualizar una lista de distribución en un archivo PST, por ejemplo para agregar un nuevo miembro, use el siguiente ejemplo de código:

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)