我正在使用EWS并希望从公司的交换中获取全球地址列表 . 我知道如何检索个人联系人列表 .
API文档中的所有示例都涉及更新用户信息,但没有具体说明如何检索它们 .
我甚至尝试过以下列出文件夹,但它没有正确的结果 .
private static void ListFolder(ExchangeService svc, FolderId parent, int depth) {
string s;
foreach (var v in svc.FindFolders(parent, new FolderView(int.MaxValue))) {
Folder f = v as Folder;
if (f != null) {
s = String.Format("[{0}]", f.DisplayName);
Console.WriteLine(s.PadLeft(s.Length + (depth * 2)));
ListFolder(svc, f.Id, depth + 1);
try {
foreach (Item i in f.FindItems(new ItemView(20))) {
Console.WriteLine(
i.Subject.PadLeft(i.Subject.Length + ((depth + 1) * 2)));
}
} catch (Exception) {
}
}
}
}
虽然问题已经提出(How to get contact list from Exchange Server?),但这个问题特别涉及使用EWS获取全球地址列表,而这个问题在一般层面上征求建议 .
2 回答
您可以使用下面的代码片段在指定的文件夹中获得ItemType对象,然后将ItemType对象转换为ContactItemType(对于联系人对象)....
我只是做了一个类似的事情 . 但是,我无法通过Exchange获取联系人列表,因为这只会使用户拥有邮箱,而不一定是所有用户或组 . 我最终通过AD获得了所有用户
这是获取AD中所有联系人的代码 . 您只需要全局地址列表的folderID,可以使用AD服务器上的ADSI.msc工具并浏览到全局地址列表文件夹,查看属性并获取"purported search"的值 . 在我的系统中,全局地址列表的searchPath是“(&(objectClass = user)(objectCategory = person)(mailNickname =)(msExchHomeServerName =))”