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

nil*_*arp 16 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);
Run Code Online (Sandbox Code Playgroud)

此代码返回一个异常说:

Validation failed.
Parameter name: searchFilter
Run Code Online (Sandbox Code Playgroud)

如果我搜索带有Subject的邮件,则相同的代码可以使用.

Abh*_*bhi 35

如果您已经知道ItemId,则不需要使用FindItems

EmailMessage email = EmailMessage.Bind(service, new ItemId(StringItemId));
Run Code Online (Sandbox Code Playgroud)


use*_*413 6

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

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