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

如何在Microsoft Graph API中同时按收件人及已读状态筛选邮件?

解决Microsoft Graph API同时筛选未读且指定收件人邮件的问题
  • 方法一:用$filter结合集合操作符直接筛选
    toRecipients是数组属性,你可以用any()操作符匹配目标收件人邮箱,同时加上isRead eq false的过滤条件,完全不用依赖$search,直接就能拿到结果。示例请求如下:

    GET https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages?$filter=isRead eq false and toRecipients/any(r: r/emailAddress/address eq 'xx@yy.com')
    

    如果需要同时覆盖抄送、密送的收件人,直接扩展过滤条件就行:

    GET https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages?$filter=isRead eq false and (toRecipients/any(r: r/emailAddress/address eq 'xx@yy.com') or ccRecipients/any(r: r/emailAddress/address eq 'xx@yy.com') or bccRecipients/any(r: r/emailAddress/address eq 'xx@yy.com'))
    
  • 方法二:先搜指定收件人邮件,再本地筛未读
    要是你需要用$search的全文检索能力(比如匹配收件人别名、昵称这类场景),可以先调用$search拿到所有发给xx@yy.com的邮件,然后在自己的代码里筛选出未读的条目。示例请求:

    GET https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages?$search="to:xx@yy.com"&$select=isRead,subject,receivedDateTime,toRecipients
    

    注意:这种方式要处理分页问题,如果结果多,得遍历完所有分页结果再做本地过滤。

额外提醒

  • 用方法一时,确保你的应用有足够权限(比如Mail.Read),而且Graph API版本在v1.0及以上(现在主流版本都支持集合操作符)。
  • 如果要查的是共享邮箱或其他用户的邮箱,把请求里的me换成users/{user-id}或者对应的文件夹路径就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:08:14