如何使用mailkit搜索基于多个条件的imap收件箱

本文关键字:条件 imap 收件箱 于多个 何使用 mailkit 搜索 | 更新日期: 2023-09-27 18:08:46

我想搜索imap收件箱与mailkit基于多个条件,如NotSeen &NotDeleted。我知道查询是可接受的,如果我们做单独的搜索查询。

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

但是我需要把这两个查询放在一起&根据条件获取所有id。

如何使用mailkit搜索基于多个条件的imap收件箱

您可以使用And()和/或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")));

好的,我找到了一个管理它的方法。如果你有更好的办法,请告诉我。

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