简体   繁体   English

如何根据多个条件使用mailkit搜索imap收件箱?

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

I want to search imap inbox with mailkit based on multiple condition like NotSeen & NotDeleted.我想根据多个条件(如 NotSeen 和 NotDeleted)使用 mailkit 搜索 imap 收件箱。 I know the queries are receptively,if we do individual search query.我知道查询是容易接受的,如果我们进行单独的搜索查询。

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

but i need to put those two queries together & get all Uids based on the conditions.但我需要将这两个查询放在一起并根据条件获取所有 Uid。 Any help would be appreciated.任何帮助将不胜感激。

You can combine search queries using the And() and/or Or():您可以使用 And() 和/或 Or() 组合搜索查询:

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

or

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

This snippet adds an conditional search condition after the main query has been set此代码段在设置主查询添加了条件搜索条件

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")));

ok i found a way to manage it.好的,我找到了管理它的方法。 Please suggest me if you have better way.如果您有更好的方法,请建议我。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM