我已经研究了执行此操作的方法并查看了 API 文档,但没有运气。有谁知道我检索特定用户的联系人的必要代码是什么。
任何帮助将不胜感激
我已经研究了执行此操作的方法并查看了 API 文档,但没有运气。有谁知道我检索特定用户的联系人的必要代码是什么。
任何帮助将不胜感激
我在网上找到的所有其他答案都过于复杂。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;
}
}
}
基本上,它归结为以下三行:
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 调用中。