从EWS托管API检索联系人

时间:2011-09-14 21:35:31

标签: contacts exchangewebservices ews-managed-api

我已经研究过这样做的方法并且没有运气地查看API文档。有谁知道我为特定用户检索联系人的必要代码是什么。

非常感谢任何帮助

2 个答案:

答案 0 :(得分: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;
            }
        }
    }

答案 1 :(得分: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调用中添加项目过滤器。