如何从GAL(全局地址列表)中获取addressEntry对象的精确匹配



我想使用C#中的以下代码在全局地址列表中搜索addressEntry对象。

Microsoft.Office.Interop.Outlook.Application app = new Outlook.Application();
Outlook.AddressList gal = app.Session.GetGlobalAddressList();
Outlook.AddressEntry entry = gal.AddressEntries[name];

但我得到了第一个匹配的名字,这是不正确的。我想将别名或primarySMTPAddress(mailId)作为索引传递,这是唯一的。给我一个传递唯一值以获得精确addressEntry对象的方法。Else方法来获取所有匹配的addressEntry对象。

您可以为下面的代码段建议可能的索引参数。

Outlook.AddressEntry entry = gal.AddressEntries[name];

您需要迭代所有项以找到完全匹配的项。Outlook对象模型没有为此提供任何方法或属性。

使用Dmitry建议的低级代码(Extended MAPI),可以在PR_ANR上创建RES_PROPERTY限制,并在相应IABContainer对象的内容表上调用IMAPITable::Restrict。这与Outlook在解析特定容器的名称并显示不明确的名称对话框时使用的限制相同。

最新更新