Trabajando con Listas de Distribución
Contents
[
Hide
]
Es posible crear una lista de distribución utilizando la API de Aspose.Email, que es una colección de múltiples contactos. Una lista de distribución se puede guardar en disco en formato MSG de Outlook y se puede ver/manipular abriéndola en MS Outlook.
Creando y Guardando una Lista de Distribución
El siguiente fragmento de código muestra cómo crear y guardar una lista de distribución.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
string dataDir = RunExamples.GetDataDir_Outlook(); | |
string displayName1 = "Sebastian Wright"; | |
string email1 = "SebastianWright@dayrep.com"; | |
string displayName2 = "Wichert Kroos"; | |
string email2 = "WichertKroos@teleworm.us"; | |
string strEntryId1; | |
string strEntryId2; | |
string path = dataDir + "CreateDistributionListInPST_out.pst"; | |
if (File.Exists(path)) | |
{ | |
File.Delete(path); | |
} | |
// Create distribution list from contacts | |
using (PersonalStorage personalStorage = PersonalStorage.Create(dataDir + "CreateDistributionListInPST_out.pst", FileFormatVersion.Unicode)) | |
{ | |
// Add the contact folder to pst | |
FolderInfo contactFolder = personalStorage.CreatePredefinedFolder("Contacts", StandardIpmFolder.Contacts); | |
// Create contacts | |
strEntryId1 = contactFolder.AddMapiMessageItem(new MapiContact(displayName1, email1)); | |
strEntryId2 = contactFolder.AddMapiMessageItem(new MapiContact(displayName2, email2)); | |
// Create distribution list on the base of the created contacts | |
MapiDistributionListMember member1 = new MapiDistributionListMember(displayName1, email1); | |
member1.EntryIdType = MapiDistributionListEntryIdType.Contact; | |
member1.EntryId = Convert.FromBase64String(strEntryId1); | |
MapiDistributionListMember member2 = new MapiDistributionListMember(displayName2, email2); | |
member2.EntryIdType = MapiDistributionListEntryIdType.Contact; | |
member2.EntryId = Convert.FromBase64String(strEntryId2); | |
MapiDistributionListMemberCollection members = new MapiDistributionListMemberCollection(); | |
members.Add(member1); | |
members.Add(member2); | |
MapiDistributionList distributionList = new MapiDistributionList("Contact list", members); | |
distributionList.Body = "Distribution List Body"; | |
distributionList.Subject = "Sample Distribution List using Aspose.Email"; | |
// Add distribution list to PST | |
contactFolder.AddMapiMessageItem(distributionList); | |
} | |
string path1 = dataDir + "CreateDistributionListInPST_OneOffmembers_out.pst"; | |
if (File.Exists(path1)) | |
{ | |
File.Delete(path1); | |
} | |
// Create one-off distribution list members (for which no separate contacts were created) | |
using (PersonalStorage personalStorage = PersonalStorage.Create(dataDir + "CreateDistributionListInPST_OneOffmembers_out.pst", FileFormatVersion.Unicode)) | |
{ | |
// Add the contact folder to pst | |
FolderInfo contactFolder = personalStorage.CreatePredefinedFolder("Contacts", StandardIpmFolder.Contacts); | |
MapiDistributionListMemberCollection oneOffmembers = new MapiDistributionListMemberCollection(); | |
oneOffmembers.Add(new MapiDistributionListMember("John R. Patrick", "JohnRPatrick@armyspy.com")); | |
oneOffmembers.Add(new MapiDistributionListMember("Tilly Bates", "TillyBates@armyspy.com")); | |
MapiDistributionList oneOffMembersList = new MapiDistributionList("Simple list", oneOffmembers); | |
contactFolder.AddMapiMessageItem(oneOffMembersList); | |
} |
Leyendo una Lista de Distribución desde un PST
El siguiente fragmento de código muestra cómo leer una lista de distribución desde un PST.
using Aspose.Email.Storage.Pst;
using Aspose.Email.Mapi;
// Cargar el archivo PST
using (var pst = PersonalStorage.FromFile("your.pst"))
{
// Obtener la carpeta de Contactos
var folder = pst.GetPredefinedFolder(StandardIpmFolder.Contacts);
if (folder != null)
{
foreach (var msgInfo in folder.EnumerateMessages())
{
// Verificar si el mensaje tiene la clase de mensaje "IPM.DistList"
if (msgInfo.MessageClass == "IPM.DistList")
{
// Extraer la lista de distribución
var distList = (MapiDistributionList)pst.ExtractMessage(msgInfo).ToMapiMessageItem();
// Ahora, puedes trabajar con la lista de distribución
// (por ejemplo, acceder a sus miembros, mostrar sus propiedades o hacer modificaciones)
}
}
}
}
Actualizar una Lista de Distribución en PST
El siguiente fragmento de código muestra cómo actualizar una lista de distribución en PST.
using Aspose.Email.Mapi;
using Aspose.Email.Storage.Pst;
// Cargar archivo PST
using (PersonalStorage pst = PersonalStorage.FromFile("my.pst"))
{
// Obtener la carpeta de Contactos
var folder = pst.GetPredefinedFolder(StandardIpmFolder.Contacts);
// Agregar un nuevo miembro a cada lista de distribución en PST
foreach (var msg in folder.EnumerateMessages())
{
// Verificar si el mensaje tiene la clase de mensaje "IPM.DistList"
if (msg.MessageClass == "IPM.DistList")
{
var distList = pst.ExtractMessage(msg).ToMapiMessageItem();
// Crear un nuevo miembro para agregar
var member = new MapiDistributionListMember("Edward R. Manuel", "EdwardRManuel@example.com");
distList.Members.Add(member);
// Actualizar la lista de distribución en PST
folder.UpdateMessage(msg.EntryIdString, distList);
}
}
}