Работа с Распределительными Списками

Возможность создания распределительного списка с использованием Aspose.Email API, который является коллекцией нескольких контактов. Распределительный список может быть сохранен на диске в формате Outlook MSG и может быть просмотрен/изменен, открыв его в MS Outlook.

Создание и Сохранение Распределительного Списка

Следующий фрагмент кода показывает, как создать и сохранить распределительный список.

// 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);
}

Чтение Распределительного Списка из PST

Следующий фрагмент кода показывает, как прочитать распределительный список из PST.

using Aspose.Email.Storage.Pst;
using Aspose.Email.Mapi;

// Загрузка файла PST
using (var pst = PersonalStorage.FromFile("your.pst"))
{
    // Получить папку Контактов
    var folder = pst.GetPredefinedFolder(StandardIpmFolder.Contacts);

    if (folder != null)
    {
        foreach (var msgInfo in folder.EnumerateMessages())
        {
            // Проверить, имеет ли сообщение класс сообщения "IPM.DistList"
            if (msgInfo.MessageClass == "IPM.DistList")
            {
                // Извлечь распределительный список
                var distList = (MapiDistributionList)pst.ExtractMessage(msgInfo).ToMapiMessageItem();
                
                // Теперь вы можете работать с распределительным списком
                // (например, получать доступ к его членам, отображать его свойства или вносить изменения)
            }
        }
    }
}

Обновление Распределительного Списка в PST

Следующий фрагмент кода показывает, как обновить распределительный список в PST.

using Aspose.Email.Mapi;
using Aspose.Email.Storage.Pst;

// Загрузка файла PST
using (PersonalStorage pst = PersonalStorage.FromFile("my.pst"))
{
    // Получить папку Контактов
    var folder = pst.GetPredefinedFolder(StandardIpmFolder.Contacts);

    // Добавить нового члена в каждый распределительный список в PST
    foreach (var msg in folder.EnumerateMessages())
    {
        // Проверить, имеет ли сообщение класс сообщения "IPM.DistList"
        if (msg.MessageClass == "IPM.DistList")
        {
            var distList = pst.ExtractMessage(msg).ToMapiMessageItem();

            // Создать нового члена для добавления
            var member = new MapiDistributionListMember("Эдвард Р. Мануэль", "EdwardRManuel@example.com");
            distList.Members.Add(member);

            // Обновить распределительный список в PST
            folder.UpdateMessage(msg.EntryIdString, distList);
        }
    }
}