如何以编程方式在Outlook中创建全局地址列表文件夹?

问题描述:

我有Outlook插件(用Visual C++编写)与DAV服务器(它充当Exchange的替代品)同步联系人。个人联系人很好,但我不知道如何模仿全球通讯簿(GAL)的行为。如何以编程方式在Outlook中创建全局地址列表文件夹?

理想情况下,我想要创建GAL文件夹,用户将能够搜索就像Outlook连接到Exchange时发生的情况一样。它有可能吗?也许,使用Outlook对象模型是不可能的,但MAPI仍然可行?任何人都可以指引我如何开始正确的方向?

我需要支持Outlook 2007+,但只支持最新版本(对于此特定功能)也是一种选择。

最初,我只是同步整个GAL文件夹,并使其成为只读,以便Outlook存储整个GAL的本地副本。当GAL大小延伸到数千条记录时,这不起作用。

+0

我不知道我理解你的问题 - 你有什么问题?从GAL中检索数千个条目的性能? –

+0

@DmitryStreblechenko一家大公司在他们的GAL(在DAV服务器上)有500K个条目。我不允许将DAV服务器中的所有500K条目加载到Outlook的本地数据库中。在Exchange上,Outlook都不这样做。每当我需要GAL的东西时,它就会让我查询Exchange服务器。它从来没有得到所有的条目,但可以运行特定的搜索查询等我需要做同样的事情。在Outlook中创建GAL文件夹,以便当用户在GAL搜索字段中输入内容时,我会得到该字符串并将其发送给DAV服务器,该服务器将只返回符合给定条件的条目。 – Alex

你不能那么做 - 地址簿提供者可以告诉Outlook只允许搜索并且不显示容器的实际内容。

除非您创建自己的MAPI存储提供程序,否则无法使用Outlook文件夹执行此操作:那么您可以根据用户的操作返回所需的任何数据。

+0

嗯,这至少告诉我我需要创建一个MAPI提供程序。这是一个开始。谢谢! – Alex

+0

即使您对MAPI有任何经验,创建提供商也远不是快速下午的项目... –

+0

我明白。但现在我至少可以告诉客户他们有哪些选择。再次感谢。 – Alex