2011-09-14 49 views
1

我已经研究了如何执行此操作并且没有运气查看API文档。有谁知道什么是我为特定用户检索联系人的必要代码。从EWS托管API中检索联系人

任何帮助,将不胜感激

回答

1

基本上,它归结为以下三行:

var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1) 
    {Credentials = new NetworkCredential("username", "password")}; 

service.AutodiscoverUrl("targetmailaddress", url => true); 

var items = service.FindItems(new FolderId(WellKnownFolderName.Contacts, new Mailbox("targetmailaddress")), new ItemView(512)); 

你需要与你正在寻找的地址来替换targetmailaddress。如果您只有一个Exchange Server,则可以省略AutoDiscover部分,并将服务URL添加到第一个列表中的服务初始化中。

像往常一样,您可以将项过滤器添加到FindItems调用。

3

我在网上找到的所有其他答案都过于复杂。 ResolveName应该可以工作。

以下示例代码适用于我;其余的只是看着不同的字典,并获得必要的信息。

public void findContact(string name) 
    { 
     NameResolutionCollection coll = service.ResolveName(name, 
      ResolveNameSearchLocation.ContactsThenDirectory, 
      true); 
     foreach (NameResolution res in coll) 
     { 
      Contact contact = res.Contact; 
      if (contact != null) 
      { 
       // retrieve contact info here 
       if (contact.PhoneNumbers != null) 
       { 
        Console.WriteLine("get different kinds of phone numbers from here"); 
       } 

       if (contact.EmailAddresses != null) 
       { 
        Console.WriteLine("get different kinds of email addresses from here"); 
       } 

       return; 
      } 
     } 
    } 
相关问题