2016-11-11 1 views
0

Ich benutze MailKit und IMAP-Client. Ich mag Meldungen erhalten, wenn sie Gegenstand angegeben haben:TextSearchQuery funktioniert nicht in 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!"); 

aber alle Methoden, die zurückgibt TextSearchQuery (zB SubjectContains, BodyContains, FromContains ....) Nicht funktioniert und ich MessageBox mit leerer Liste info. Aber wenn meine Abfrage zurückgeben SearchQuery zB .:

var query = SearchQuery.NotSeen; 

oder

var query = SearchQuery.NotFlagged; 

es richtig funktioniert. Wo ist das Problem? Mit Zeichencodierung?

Antwort

0

Ich löste dieses Problem. Ich habe "_" char in Betreff mit "+" geändert (zulässig in Base64, vielleicht ist es wichtig).

1

Verschiedene IMAP-Server implementieren Textabgleich anders. Einige IMAP-Server führen eine literale Teilzeichensuche aus, während andere den Nachrichtentext/Betrefftext beim Eintreffen der Nachricht in Token zerlegen und eine Datenbank behalten, welche Nachrichten welche Wörter enthalten.

Einige IMAP-Server dekodieren den Text (wenn es codiert ist) und einige nicht.

Die textbasierte Suche hängt vollständig vom verwendeten IMAP-Server ab.

Verwandte Themen