我使用MailKit和IMAP Client。如果他们指定了主题,我想要收到消息:
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 :(得分:1)
不同的IMAP服务器以不同方式实现文本匹配。一些IMAP服务器执行文字子字符串搜索,而其他IMAP服务器在消息到达时将消息文本/主题文本标记化,并保留数据库中包含哪些消息。
有些IMAP服务器会对文本进行解码(如果已编码),有些则不会。
基于文本的搜索完全取决于您正在使用的IMAP服务器。
答案 1 :(得分:0)
我解决了这个问题。我改变了#34; _"使用" +" (在Base64中允许,也许很重要)。