TextSearchQuery 在 MailKit 中不起作用

TextSearchQuery not works in MailKit

我使用 MailKit 和 IMAP 客户端。我想收到指定主题的消息:

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

但是 returns TextSearchQuery(例如 SubjectContainsBodyContainsFromContains...)的所有方法都不起作用,我得到了 MessageBox带有空列表信息。但是如果我的查询 return SearchQuery 例如:

var query = SearchQuery.NotSeen;

var query = SearchQuery.NotFlagged;

它工作正常。问题出在哪里?使用字符编码?

不同的 IMAP 服务器实现文本匹配的方式不同。一些 IMAP 服务器执行文字子字符串搜索,而其他服务器在消息到达时标记消息 text/subject 文本,并保留一个数据库,其中包含哪些消息包含哪些单词。

有些 IMAP 服务器会解码文本(如果已编码),有些则不会。

基于文本的搜索完全取决于您使用的 IMAP 服务器。

我解决了这个问题。我将主题中的“_”字符更改为“+”(在 Base64 中允许,也许这很重要)。