使用 EWS 读取 Exchange Server 上的所有自定义属性

Posted

技术标签:

【中文标题】使用 EWS 读取 Exchange Server 上的所有自定义属性【英文标题】:Reading ALL custom properties on Exchange Server with EWS 【发布时间】:2013-05-14 09:56:13 【问题描述】:

我想从 EWS-Items 中读取所有“自定义属性”。我确实有属性的名称(例如“持续时间”或“距离”),但我没有创建它们(我的客户做了)。

我想我将不得不使用“Item”类的“ExtendedProperties”。但是当我将 Item.Bind() 与 Property-set 一起使用时,我需要知道我没有的 GUID!微软说 (http://msdn.microsoft.com/en-us/library/exchange/dd633697%28v=exchg.80%29.aspx): "从创建扩展属性时使用的 GUID 创建一个 GUID 标识符。"

我没有这些 GUID,因为我没有创建属性。 我想唯一的机会是在没有特定属性集的情况下使用 Item.Bind() 。这会减慢这个过程吗(我需要为邮箱中的每个项目调用它)?

我基本上想用这样的子句进行迭代: if (extendedProperty.PropertyDefinition.Name == "duration")

任何想法如何做到这一点?

谢谢

马丁

【问题讨论】:

【参考方案1】:

尝试使用 PropertyDefinition 和属性类型 (MapiPropertyType) 按名称恢复它:

//搜索“duration”属性

 Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition extendedPropertyDefinition =
    new Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition
        (DefaultExtendedPropertySet.Common, "duration", MapiPropertyType.String);    

    EmailMessage msgMod = EmailMessage.Bind(service, msgComplete.Id, 
                          new PropertySet(extendedPropertyDefinition));

    ExtendedPropertyCollection colProp = msgMod.ExtendedProperties;
    foreach (ExtendedProperty prop in colProp)
    

       //Iterate properties

    

【讨论】:

以上是关于使用 EWS 读取 Exchange Server 上的所有自定义属性的主要内容,如果未能解决你的问题,请参考以下文章

使用 EWS(Exchange Web Service)协议读取邮件发送邮件

Powershell 访问Exchange EWS API

导入 Exchange Web 服务 (EWS) wsdl 文件时如何修复未解析的类型?

exchange server 2013 In-Place eDiscovery问题

使用Exchange读取邮件发送邮件

通过 EWS 在 Exchange 中创建联系人