You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MailKit中不使用SearchQuery 直接传入文本字符串搜索邮件的实现方案

解决方案

client.Inbox 返回的 IMailFolder 接口实例,在ImapClient场景下实际运行类型就是ImapFolder,有两种可行方案实现原生IMAP字符串搜索:

  • 方案1:类型转换后调用原生字符串重载
    直接将IMailFolder强转为ImapFolder类型,即可调用支持传入原生搜索字符串的方法重载:

    // 强转为实际运行类型
    ImapFolder imapInbox = (ImapFolder)inbox;
    string query = "SENTSINCE 2021-10-06 FROM mailer-daemon@myprovider.it";
    foreach (var uid in imapInbox.Search(SearchOptions.All, query))
    {
        var message = imapInbox.GetMessage(uid);
        Console.WriteLine("{0}|{1}|{2}|{3}|{4}", uid, message.Date, message.From, message.To,message.Subject);
    }
    
  • 方案2:使用SearchQuery.Parse转换字符串(更稳妥)
    MailKit原生提供了搜索字符串解析方法,无需修改原有类型定义,自动处理格式转义、兼容性适配:

    string rawQuery = "SENTSINCE 2021-10-06 FROM mailer-daemon@myprovider.it";
    // 直接将原生IMAP搜索字符串转为SearchQuery对象
    var query = SearchQuery.Parse(rawQuery);
    // 不需要强转类型,沿用原有IMailFolder实例即可
    foreach (var uid in inbox.Search(query))
    {
        var message = inbox.GetMessage(uid);
        Console.WriteLine("{0}|{1}|{2}|{3}|{4}", uid, message.Date, message.From, message.To,message.Subject);
    }
    

内容的提问来源于stack exchange,提问作者andros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:06:05