Работа с Распределительными Списками
Contents
[
Hide
]
Возможность создания распределительного списка с использованием Aspose.Email API, который является коллекцией нескольких контактов. Распределительный список может быть сохранен на диске в формате Outlook MSG и может быть просмотрен/изменен, открыв его в MS Outlook.
Создание и Сохранение Распределительного Списка
Следующий фрагмент кода показывает, как создать и сохранить распределительный список.
This file contains 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); | |
} |
Чтение Распределительного Списка из 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);
}
}
}