我想从存储在Exchange 2010 Server上的公用文件夹中的电子邮件中获取附件,并在将附件保存到文件后,我想将电子邮件标记为“已完成”。
很容易获取电子邮件列表,并且属性TaskSchema.IsComplete
可用于过滤搜索结果:(“posteingang”是我要搜索的公用文件夹)
FindItemsResults<Item> findItemResults;
ItemView view = new ItemView(50);
findItemResults = service.findItems(posteingang.getId(),
new SearchFilter.SearchFilterCollection(
LogicalOperator.And,
new SearchFilter.ContainsSubstring(ItemSchema.Subject, "example"),
new SearchFilter.IsNotEqualTo(TaskSchema.IsComplete, true)
),
view);
service.loadPropertiesForItems(findItemResults, PropertySet.FirstClassProperties);
for (Item item : findItemResults) {
EmailMessage msg = (EmailMessage) item;
msg.setIsRead(true);
msg.setCategories(SL_DARVIN);
msg.setImportance(Importance.Low);
msg.update(ConflictResolutionMode.AlwaysOverwrite);
}
然而,当我想要将电子邮件标记为完整的部分时,我不知道如何这样做。将item
投射到task
将不起作用: - (
有人有想法吗?
P.S。:代码示例使用Java,但由于EWS API,它们在C#中几乎完全相同。
答案 0 :(得分:0)
您应该能够使用扩展属性将其标记为完整,例如
ExtendedPropertyDefinition PidTagFlagStatus = new ExtendedPropertyDefinition(0x1090, MapiPropertyType.Integer);
ExtendedPropertyDefinition PidTagFlagCompleteTime = new ExtendedPropertyDefinition(0x1091, MapiPropertyType.SystemTime);
ExtendedPropertyDefinition PidLidTaskComplete = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Task, 0x811C,MapiPropertyType.Boolean);
ExtendedPropertyDefinition PidLidCommonEnd = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, 0x8517, MapiPropertyType.SystemTime);
ExtendedPropertyDefinition PidLidTaskStatus = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Task, 0x8101, MapiPropertyType.Integer);
ExtendedPropertyDefinition PidLidPercentComplete = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Task, 0x8102, MapiPropertyType.Double);
ExtendedPropertyDefinition TaskDateCompleted = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Task, 0x810F, MapiPropertyType.SystemTime);
ExtendedPropertyDefinition PidTagFollowupIcon = new ExtendedPropertyDefinition(0x1095, MapiPropertyType.Integer);
Message.SetExtendedProperty(PidTagFlagStatus, 0x00000001);
Message.SetExtendedProperty(PidTagFlagCompleteTime, DateTime.Now);
Message.SetExtendedProperty(PidLidTaskComplete, true);
Message.SetExtendedProperty(PidLidCommonEnd, DateTime.Now);
Message.SetExtendedProperty(PidLidTaskStatus, 2);
Message.SetExtendedProperty(PidLidPercentComplete, 1);
Message.SetExtendedProperty(TaskDateCompleted, DateTime.Now);
Message.SetExtendedProperty(PidTagFollowupIcon, 3);
Message.Update(ConflictResolutionMode.AlwaysOverwrite);