如何使用EWS将项目设置为“已完成”

时间:2016-10-28 10:10:44

标签: exchangewebservices

我想从存储在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#中几乎完全相同。

1 个答案:

答案 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);