2015-03-16 3 views
1

Я пытаюсь создать SearchFolder, используя API EWS (управляемый или веб-сервис напрямую). Я заметил, что если я создам SearchFilter.ContainsSubstring на ItemSchema.Body, я не получаю от него никаких разговоров.EWS SearchFolder не возвращает значения из тела

вот как я создаю мою папку:

var folder = new SearchFolder(service) 
{ 
    DisplayName = topic 
}; 
var searchParameters = folder.SearchParameters; 
searchParameters.SearchFilter = new SearchFilter.ContainsSubstring(ItemSchema.Body, topic, ContainmentMode.Substring, ComparisonMode.IgnoreCaseAndNonSpacingCharacters); 
searchParameters.RootFolderIds.Add(WellKnownFolderName.Root); 
searchParameters.Traversal = SearchFolderTraversal.Deep; 
folder.Save(WellKnownFolderName.SearchFolders); 

Позже, когда я пытаюсь получить разговоры из этой папки:

service.FindConversation(conversationView, folder.Id); 

И это возвращает 0 разговоры.
Я убедился, отправив два сообщения на мой адрес электронной почты, первый со специальным термином только в теме, а второй с тем же термином в теле. Если я создаю SearchFolder с фильтром на ItemSchema.Subject, я получаю первый разговор, но используя созданный выше SearchFolder, я не получаю ожидаемого результата.

Существуют ли какие-либо ограничения в отношении ContainsSubstring SearchFilter? Я попытался использовать NormalizedBody или TextBody, но потом я получил ошибки в процессе создания папки. Есть ли что-то еще, что мне не хватает?

ответ

2

Выполнение поискового фильтра на теле, скорее всего, будет проблематичным. Это связано с тем, как потенциально большие свойства, такие как Body, обрабатываются в таблицах содержимого. Поиск строки запроса, вероятно, будет работать лучше, но вы не можете использовать строку запроса для создания папки поиска.

Смежные вопросы