我正在创建一个 Microsoft Outlook 加载项(Visual Studio 2012、C#、COM 加载项,无 VSTO,Outlook 2010/2013/2016),其中 1) 用户必须能够编写和读取必须映射到的各种字段/当消息离开/进入 Microsoft Exchange 时来自 MIME 标头,以及 2) 字段必须可用作本机 Outlook 字段,以便在 Outlook 视图、搜索表达式等中用作列。
要获得 1),加载项读取和写入 PS_INTERNET_HEADERS 命名空间中的 (MAPI) 字段。首次加载加载项时,它会创建一个虚拟隐藏消息,以确保 Exchange 强制执行传入消息的 MIME 标头和 MAPI 属性之间的映射(解决命名属性、X-Headers 和 You中描述的问题) . 这很好用。
为了获得 2),我创建了一个老式的 Outlook 表单配置文件(创建表单配置文件),其中包含以下条目:
[Property.MMHSFoo]
Type=31
NmidPropset={00020386-0000-0000-C000-000000000046}
NmidString=MMHS-Foo
DisplayName=Foo
然后我使用 Outlook Redemption 在加载项加载时注册表单。现在用户可以将字段 Foo 用作其他 Outlook 字段。
现在,我的问题是,当我使用 Outlook 表单设计器创建表单区域时,如果我尝试添加字段 Foo,我会收到一条错误消息,提示“操作失败”。如果我将 NmidPropset 值从 PS_INTERNET_HEADERS (00020386-0000-0000-C000-000000000046) 更改为 PS_PUBLIC_STRINGS (00020329-0000-0000-C000-000000000046),我可以添加字段 Foo,但是 1) 不起作用。
因此我的问题是:如何将命名空间 PS_INTERNET_HEADERS 中的字段添加到 Outlook 表单区域,从而满足要求 1) 和 2)?