1

我已经研究了执行此操作的方法并查看了 API 文档,但没有运气。有谁知道我检索特定用户的联系人的必要代码是什么。

任何帮助将不胜感激

4

2 回答 2

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;
            }
        }
    }
于 2012-08-14T09:25:44.443 回答
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 调用中。

于 2011-09-15T10:05:16.847 回答