EWS托管API查找具有ItemID的项目

时间:2013-12-13 15:45:24

标签: c# exchange-server ews-managed-api

我正在尝试从已删除项目文件夹中找到项目唯一ID

ItemId id = new ItemId("zTK6edxaI9sb6AAAQKqWHAAA");
SearchFilter.IsEqualTo filter = new SearchFilter.IsEqualTo(ItemSchema.Id, id);
ItemView view = new ItemView(10);
view.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, EmailMessageSchema.Subject);
FindItemsResults<Item> results = _ExchangeService.FindItems(WellKnownFolderName.DeletedItems, filter, view);
Console.WriteLine(results.TotalCount);

此代码返回一个例外说明:

Validation failed.
Parameter name: searchFilter

如果我搜索带主题的邮件,则相同的代码可用。

2 个答案:

答案 0 :(得分:34)

如果您已经知道ItemId

,则不需要使用FindItems
EmailMessage email = EmailMessage.Bind(service, new ItemId(StringItemId));

答案 1 :(得分:6)

您无法搜索ComplexIperty,例如ItemId。我假设Item.Bind因项目被移动而无效,这改变了ItemId?

如果是这种情况,那么您需要在另一个属性上使用SearchFilter。如果这些是您通过EWS创建的项目,则可以为每个项目附加一个唯一的扩展属性,并在需要搜索时使用该属性。