Добавить новые записи в личный список рассылки Outlook - PullRequest
2 голосов
/ 17 декабря 2008

Мне нужно прочитать записи, содержащие имя и адрес электронной почты, из файла или базы данных и добавить их в существующий список рассылки Oulook (из личных контактов, а не из GAL).

Я только что видел примеры чтения из OL с использованием LINQ to DASL, который у меня работает для почты и встреч, но я не могу понять, как составить список содержимого списка dist:

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

После того, как я смогу прочитать участников, мне нужно будет добавить новых, что еще более хитроумно. Любая помощь будет оценена.

1 Ответ

2 голосов
/ 19 декабря 2008

Оказывается, это достаточно просто. Я просто пропустил звонок в Resolve, так как думал, что только в том случае, если вы решите против GAL:

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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...