如何使用 EWS 将项目设置为"completed"



我想从存储在Exchange 2010服务器公共文件夹中的电子邮件中获取附件,在将附件保存到文件后,我想将电子邮件标记为"已完成"。

很容易获得电子邮件列表,并且属性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将不起作用:-(

)

有谁有主意吗?

注::代码示例是用Java编写的,但由于EWS API,它们在c#中应该几乎相同。

您应该能够使用扩展属性将其标记为完整,例如

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

最新更新