mailkit如何根据多种条件搜索imap收件箱?

How to search imap inbox with mailkit based on multiple condition?

我想根据 NotSeen 和 NotDeleted 等多种条件使用 mailkit 搜索 imap 收件箱。我知道查询是可以接受的,如果我们进行单独的搜索查询。

var uids = client.Inbox.Search(SearchQuery.NotSeen); 
var uids = client.Inbox.Search(SearchQuery.NotDeleted );   

但我需要将这两个查询放在一起并根据条件获取所有 Uid。 任何帮助将不胜感激。

好的,我找到了管理它的方法。如果你有更好的方法,请建议我。

            var unread = client.Inbox.Search(SearchQuery.NotSeen);
            var Deleted = client.Inbox.Search(SearchQuery.Deleted);
            var Res  = unread.Except(Deleted).ToList();

您可以使用 And() and/or Or():

组合搜索查询
var uids = client.Inbox.Search (SearchQuery.NotSeen.And (SearchQuery.NotDeleted));

var uids = client.Inbox.Search (SearchQuery.And (SearchQuery.NotSeen, SearchQuery.NotDeleted));

此代码段添加条件搜索条件设置主查询后

var query = MailKit.Search.SearchQuery.FromContains("anyone@gmail.com")
                            .And(MailKit.Search.SearchQuery.SubjectContains("Your Subject"));

query = query .And(MailKit.Search.SearchQuery.DeliveredAfter(DateTime.Parse("2020-02-28")));