使用EWS创建扩展属性并从Outlook加载项访问它

ahl*_*lun 3 delphi extended-properties exchange-server user-defined-fields outlook-addin

我目前正在使用EWS将我们公司的应用程序与Exchange 2010集成在一起.我正在使用EWS创建对Exchange 2010的任命,它运行正常; 但最近我尝试在创建约会时添加一些自定义/扩展属性,下面是我添加扩展属性的代码.

Dim customField As New ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "MyCustomField", MapiPropertyType.String)

appointment.SetExtendedProperty(customField, "CustomFieldValue")
Run Code Online (Sandbox Code Playgroud)

以上代码能够为约会创建自定义字段.

现在这是我的问题.当我打开我创建的Outlook中的约会并转到"开发人员>设计此表单",然后转到"所有字段"选项卡时,我只看到我在"文件夹中的用户定义字段"中创建的自定义字段,但不是"此项中用户定义的字段".

我还制作一个Outlook加载项,以便在用户在Outlook中打开约会时使用EWS创建自定义字段,当我尝试查找自定义字段时,无法找到自定义字段,因为自定义字段在"文件夹中的用户定义的字段"中创建,但不在"此项目中的用户定义的字段"中创建.

这是Outlook加载项中的代码,将在用户在Outlook中打开apointment时执行.但由于自定义字段不在"此项目中",因此.Find()返回Nothing.

Dim appt As Outlook.AppointmentItem
appt = TryCast(inspector.CurrentItem, Outlook.AppointmentItem)
If appt.UserProperties.Find("MyCustomField") Is Nothing Then
    'Some action
Else
    'Some action
End If
Run Code Online (Sandbox Code Playgroud)

我想要实现的是使用EWS创建自定义字段(扩展属性)的约会,然后在用户在Outlook中打开约会时读取Outlook加载项中的自定义字段(扩展属性).

编辑:

我使用EWS分配给自定义字段的值显示在"文件夹中的用户定义字段"中.如何从Outlook加载项中检索值?也许我可以检索值并将自定义字段添加到项目并使用值?

谢谢.

ahl*_*lun 7

答案在这里:http: //social.technet.microsoft.com/Forums/en-US/exchangesvrdevelopment/thread/2a98b4ab-0fbc-4863-8303-48711a18a050

无法使用UserProperties访问EWS创建的扩展属性.但是可以使用PropertyAccessor进行访问.

outlookItem.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/yourProp")
Run Code Online (Sandbox Code Playgroud)