场景是这样的:有一个导出到Outlook的应用程序,然后有一个将数据发送到应用程序的Outlook加载项。通过任何一种方式发送信息都很容易,然后在Outlook中创建具有用户属性的Outlook项目,或者在应用程序中使用EWS创建项目并使用扩展属性。
设置扩展属性的方法如下:
extendedPropertyDefinition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "CustomProperty", MapiPropertyType.String);
contact.SetExtendedProperty(extendedPropertyDefinition, customPropertyValue);
那么,如何在Outlook加载项中访问应用程序(使用EWS)设置的扩展属性呢?
在外接程序中,不能简单地将此属性定义为UserProperty。因此,需要使用PropertyAccessor访问该属性,为此需要扩展属性的架构。这在在线文档中并不容易找到,但我设法发现这些PublicStrings扩展属性的模式是:
"http://schemas.microsoft.com/mapi/string/{00020329-00000-0000-C000-000000000046}/CustomProperty"
请注意,如果使用PropertyAccessor,而Outlook项上不存在该属性,则会引发COM异常,因此需要进行try-catch操作才能返回空值。