Добавление новых записей в личный список рассылки Outlook
-
22-08-2019 - |
Вопрос
Мне нужно прочитать записи, содержащие имя и адрес электронной почты, из файла или базы данных и добавить их в существующий список рассылки Oulook (из личных контактов, а не из GAL).
Я только что видел примеры чтения из OL с использованием LINQ в DASL, которые у меня работают для почты и встреч, но я не могу понять, как перечислить содержимое dist list:
private static void GetContacts()
{
Outlook.Application app = new Outlook.Application();
Outlook.Folder folder = (Outlook.Folder)app.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
var distLists = from item in folder.Items.AsQueryable<MyDistList>()
where item.DLName == "My Dist List"
select item.Item;
var builder = new StringBuilder();
foreach (var list in distLists)
{
builder.AppendLine(list.DLName);
foreach (var item in list.Members)
{
// can't figure out how to iterate through the members here
// compiler says Object doesn't have GeNumerator...
}
}
Console.WriteLine(builder.ToString());
Console.ReadLine();
}
Как только я смогу прочитать участников, мне нужно будет иметь возможность добавлять новые, что является еще большим подвохом.Будем признательны за любую помощь.
Решение
Оказывается, это достаточно просто.Я просто пропустил призыв к Разрешению, так как думал, что это было только в том случае, если вы решали против ДЕВУШКИ:
Outlook.Recipient rcp = app.Session.CreateRecipient("Smith, John<j.smith@test.com>");
rcp.Resolve();
list.AddMember(rcp);
list.Save();
И я могу создать итератор, который использует метод DistList.getMember:
// Оберните DistListItem.GetMembers() в качестве итератора
public static class DistListItemExtensions
{
public static IEnumerable<Outlook.Recipient> Recipients(this Outlook.DistListItem distributionList)
{
for (int i = 1; i <= distributionList.MemberCount; i++)
{
yield return distributionList.GetMember(i);
}
}
}