2016-11-11 5 views
0

私はMailKitとIMAP Clientを使用します。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を返すメソッド(例えばSubjectContainsBodyContainsFromContains ...)ではない作品と私​​は空のリスト情報とメッセージボックスを取得する:私は、彼らが対象を指定した場合はメッセージを取得します。しかし、例えば、私のクエリの戻りSearchQuery

var query = SearchQuery.NotSeen; 

または

var query = SearchQuery.NotFlagged; 

場合、それは正常に動作します。問題はどこだ? charsエンコーディング?

答えて

0

私はこの問題を解決しました。私は "+"(Base64で許されているかもしれませんが、それは重要かもしれません)の件名で "_" charを変更しました。

1

さまざまなIMAPサーバーは、テキストマッチングをさまざまに実装しています。いくつかのIMAPサーバはリテラルの部分文字列検索を行い、他のものはメッセージが到着したときにメッセージテキスト/件名テキストをトークン化し、どのメッセージにどの単語が含まれているかのデータベースを保持します。

一部のIMAPサーバーはテキストを(エンコードされている場合)デコードし、一部はエンコードしない場合があります。

テキストベース検索は、使用しているIMAPサーバーに完全に依存します。

関連する問題