Soap 通过EWS检索Outlook Office365标记的属性
在Outlook Office365中,可以标记单个邮件 切换此标志将在Soap 通过EWS检索Outlook Office365标记的属性,soap,outlook,exchange-server,exchangewebservices,Soap,Outlook,Exchange Server,Exchangewebservices,在Outlook Office365中,可以标记单个邮件 切换此标志将在SyncFolderItems-请求中提供一个已更新的-条目。在获取项目时,此属性似乎不是默认属性的一部分,甚至不是所有属性的一部分,因此我猜它是一个扩展属性 我如何通过EWS获得它?我想支持Exchange 2010。这是属性 使用SyncFolderItems时,请执行以下操作以读取此类属性: var property_set = new PropertySet(ItemSchema.Flag, ItemSchema.
SyncFolderItems
-请求中提供一个已更新的
-条目。在获取项目时,此属性似乎不是默认属性的一部分,甚至不是所有属性的一部分,因此我猜它是一个扩展属性
我如何通过EWS获得它?我想支持Exchange 2010。这是属性
使用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;
}
标志
变量的类型为。查看其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
}
}
这是基于属性的。请注意,文档中指出,这不适用于会议或任务项目。这是在Exchange 2013中添加的,因此您需要确保您的请求版本指定了Exchange 2013(或更高版本)以使其生效returned@GlenScales谢谢大家!因为我的目标是Exchange 2010,所以是否有一个等价物?我目前正在自定义属性中存储一个布尔值,该属性工作得很好,但在我的应用程序之外当然不起作用。@Thole,请检查我编辑的答案,以获得exchange 2010的可能解决方案。@YacoubMassad尝试了一个快速SOAP请求,效果很好。只是对邮件感兴趣,所以它会很有用。谢谢你,雅库布!