我已经研究过这样做的方法并且没有运气地查看API文档。有谁知道我为特定用户检索联系人的必要代码是什么。
非常感谢任何帮助
答案 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调用中添加项目过滤器。