Добавление новых записей в личный список рассылки Outlook

StackOverflow https://stackoverflow.com/questions/375148

  •  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);
        }
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top