2016-11-11 3 views
0

Я использую MailKit и IMAP-клиент. Я хочу получать сообщения, если они указаны предмет:TextSearchQuery не работает в MailKit

client.Inbox.Open(FolderAccess.ReadOnly); 
var query = SearchQuery.SubjectContains("my_subject"); 
var uids = client.Inbox.Search(query); 
if (!uids.Any()) 
    MessageBox.Show("Empty list!"); 

, но все методы, которые возвращают TextSearchQuery (например SubjectContains, BodyContains, FromContains ....), Не работает и я получаю MessageBox с пустым списком информацией. Но если мой запрос возвращал SearchQuery например .:

var query = SearchQuery.NotSeen; 

или

var query = SearchQuery.NotFlagged; 

он работает правильно. В чем проблема? С кодировкой символов?

ответ

0

Я решил эту проблему. Я изменил символ «_» в теме с «+» (допустимо в Base64, возможно, это имеет значение).

1

Различные серверы IMAP реализуют текстовое соответствие по-разному. Некоторые серверы IMAP выполняют литеральный поиск подстроки, в то время как другие токенизуют текст сообщения/текст сообщения, когда приходит сообщение, и хранят базу данных, какие сообщения содержат какие слова.

Некоторые IMAP-серверы декодируют текст (если он закодирован), а некоторые нет.

Текстовый поиск полностью зависит от сервера IMAP, который вы используете.

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