2008-12-17 62 views
2

我需要从文件或数据库中读取包含姓名和电子邮件的记录,并将其添加到现有的Oulook通讯组列表中(来自私人通讯录,而不是来自GAL)。向私人Outlook通讯组列表添加新记录

我刚才看到的,从使用LINQ to我已经工作了邮件和约会DASL OL读书的例子,但我无法弄清楚如何列出一个清单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(); 
    } 

一旦我可以阅读我需要的成员,以便能够添加新的成员,这更加诡异。任何帮助,将不胜感激。

回答

2

原来这很容易。我只是错过了呼叫解决,因为我认为这是唯一的,如果你解决了对GAL:

Outlook.Recipient rcp = app.Session.CreateRecipient("Smith, John<[email protected]>"); 
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); 
     } 
    } 
} 
相关问题