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

Retrieve the Outlook Office365 Flagged property through EWS

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

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

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

这是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属性。请注意,文档说明这不适用于会议或任务项。