通过 EWS 检索 Outlook Office365 标记的属性

Posted

技术标签:

【中文标题】通过 EWS 检索 Outlook Office365 标记的属性【英文标题】:Retrieve the Outlook Office365 Flagged property through EWS 【发布时间】:2015-09-14 08:51:32 【问题描述】:

在 Outlook Office365 中,您可以标记单个邮件。

切换此标志会在SyncFolderItems-request 中提供updated-entry。在获取项目时,该属性似乎不是Default 属性的一部分,甚至不是AllProperties,所以我猜它是一个扩展属性。

如何通过 EWS 获取它?我想支持 Exchange 2010。

【问题讨论】:

【参考方案1】:

这是ItemSchema.Flag 属性。

当您使用 SyncFolderItems 时,请执行以下操作来读取此类属性:

var property_set = new PropertySet(ItemSchema.Flag, ItemSchema.Id);

var result = service.SyncFolderItems(folder_id, property_set, new ItemId[]  , 10,
SyncFolderItemsScope.NormalItems, sync_state);


foreach (var result_item in result)

    var flag = result_item.Item.Flag;

flag 变量的类型为 Flag。看看它的 FlagStatus 成员,看看如何检测项目是否被标记。

由于这仅适用于 Exchange 2013,以下是适用于 Exchange 2010 的解决方法:

var flag_property = new ExtendedPropertyDefinition(0x1090 , MapiPropertyType.Integer);

var property_set = new PropertySet(flag_property, ItemSchema.Id);

var result = service.SyncFolderItems(WellKnownFolderName.Inbox, property_set, new ItemId[]  , 10,
SyncFolderItemsScope.NormalItems, sync_state);


foreach (var result_item in result)

    var flag = result_item.Item.ExtendedProperties.FirstOrDefault(x => x.PropertyDefinition == flag_property);


    if (flag == null)
    
        //Item is not flagged    
    
    else if((int)flag.Value == 1)
    
        //Item is makred complete
    
    else if ((int)flag.Value == 2)
    
        //Item is flagged
    

这基于PidTagFlagStatus 属性。请注意,文档声明这不适用于会议或任务项目。

【讨论】:

这是在 Exchange 2013 中添加的,因此您需要确保您的请求版本指定 Exchange 2013(或更高版本)才能返回 @GlenScales 谢谢大家! Exchange 2010 是否有等价物,因为这是我的目标?我目前正在将布尔值存储在自定义属性中,效果很好,但在我的应用程序之外当然不起作用。 @Tholle,请查看我编辑后的答案,了解 2010 年交换的可能解决方案。 @YacoubMassad 尝试了一个快速的 SOAP 请求,效果很好。只对邮件感兴趣,所以它会很好用。谢谢雅库布!

以上是关于通过 EWS 检索 Outlook Office365 标记的属性的主要内容,如果未能解决你的问题,请参考以下文章

从 EWS 创建 Outlook 用户属性

如何在 Outlook 插件中访问 EWS `UniqueId` 字段

使用 EWS 添加新的 Outlook 联系人以自动完成?

Outlook 365 EWS 流式通知 |如何计算发送和接收消息所需的时间?

从 Java 应用程序调用 https://outlook.office365.com/EWS/Exchange.asmx 时出现随机 SSLHandshakeException

在Office365上获取对EWS的访问令牌时无效的作用域