2013-12-13 176 views
11
项目

我试图找到已删除的项目文件夹中给出的项的唯一IDEWS托管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 

相同的代码工作如果我搜索与主题的消息。

回答

24

你并不需要使用FindItems如果你已经知道项目Id

EmailMessage email = EmailMessage.Bind(service, new ItemId(StringItemId)); 
+0

我爱你男人!这应该是答案。 – Elfayer

5

不能在ComplexItemProperty上进行搜索,如ItemId。我假设Item.Bind不能工作,因为正在移动的项目改变了ItemId?

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

+0

是ItemIDs的变化是致命的,我意识到,它不是被转移到其他的项目相关的可靠机制像收件箱一样的文件夹删除项目。 – nilobarp