从Outlook插件中的EWS获取ExtendedPropertyDefinition值

本文关键字:获取 ExtendedPropertyDefinition EWS Outlook 插件 | 更新日期: 2023-09-27 18:01:36

我正在使用EWS webservices对邮箱进行自动处理,并将ExtendedPropertyDefinition分配给消息,如下所示:

Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition extendedPropertyDefinition =
                           new Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, "Archivado", MapiPropertyType.String);
  msgComplete.SetExtendedProperty(extendedPropertyDefinition, iddoc);
                             msgComplete.Update(ConflictResolutionMode.AlwaysOverwrite);

另一方面,我正在开发一个Outlook插件,需要评估每个消息点击,如果该消息有这个ExtendedPropertyDefinition名称定义,但我不知道如何使用Outlook类从Outlook插件恢复扩展属性。

我不介意,如果我必须使用另一种类型的属性,从两个框架访问。

我尝试在Outlook中使用以下属性,但没有运气;

item.Userproperties;
item.PropertyAccesor.GetProperty("Archivado"); 
item.ItemProperties;

从Outlook插件中的EWS获取ExtendedPropertyDefinition值

好了,我终于明白了。我必须使用Guid创建ExtendedPropertyDefinition然后使用该属性上的模式从outlook中恢复它,如下所示:

//Setting the property with Exchange webservice:
string guid = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
Guid MY_PROPERTY_SET_GUID = new Guid(guid); 
Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition extendedPropertyDefinition =
new Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(MY_PROPERTY_SET_GUID, "Archivado", MapiPropertyType.String);

//Recover the property using Outlook:

Outlook.MailItem item = (Outlook.MailItem)e.OutlookItem;
Outlook.UserProperties mailUserProperties = item.UserProperties;
dynamic property=item.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/string/{Outlook.MailItem item = (Outlook.MailItem)e.OutlookItem;
            Outlook.UserProperties mailUserProperties = item.UserProperties;
            dynamic property=item.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/string/{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}/Archivado");