Ответ 1
Вам не нужно использовать FindItems, если вы уже знаете ItemId
EmailMessage email = EmailMessage.Bind(service, new ItemId(StringItemId));
Я пытаюсь найти элементы из папки удаленных элементов, учитывая уникальные идентификаторы элементов
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
Тот же код работает, если я ищу сообщение с Subject.
Вам не нужно использовать FindItems, если вы уже знаете ItemId
EmailMessage email = EmailMessage.Bind(service, new ItemId(StringItemId));
Вы не можете искать в ComplexProperty, например ItemId. Я предполагаю, что Item.Bind не будет работать из-за перемещаемого элемента, который изменил ItemId?
Если это произойдет, вам нужно будет использовать SearchFilter для другого свойства. Если это элементы, созданные с помощью EWS, вы можете присоединить к ним уникальное расширенное свойство и использовать его, если вам нужно его искать.