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

如何通过Microsoft Graph API统计发送给自己的Outlook邮件数量

如何通过Microsoft Graph API的GET请求统计发送给自己的Outlook邮件数量

你尝试过的不支持方法

  • 组合$search与$filter:

    f"{BASE_URL}/users/{email}/messages?$filter=from/emailAddress/address eq '{email}'&$search=\"cc:{email}\""
    

    原因:Graph API不允许同时使用$search和$filter参数。

  • 组合$search与$count:

    f"{BASE_URL}/users/{email}/messages?$search=\"cc:{email}\"&$count=true"
    

    原因:缺少必要的请求头ConsistencyLevel: eventual,无法返回正确计数。

  • 组合$filter与复杂集合:

    f"{BASE_URL}/users/{email}/messages?$filter=toRecipients/any(e:e/emailAddress/address eq '{email}')"
    

    原因:仅请求邮件列表,未开启计数参数和对应请求头,无法直接获取数量。

正确解决方案

要直接获取发送给自己(含收件人、抄送人)的邮件数量,无需拉取全部邮件详情,可按以下步骤实现:

1. 构造过滤条件

同时匹配收件人、抄送人中包含自身邮箱的邮件,过滤规则如下:

$filter=toRecipients/any(r:r/emailAddress/address eq '{email}') or ccRecipients/any(r:r/emailAddress/address eq '{email}')

2. 配置计数参数与请求头

  • URL中添加$count=true,指定返回邮件总数
  • 必须设置请求头ConsistencyLevel: eventual,这是使用复杂过滤或$count的强制要求

3. 完整请求示例

import requests

BASE_URL = "https://graph.microsoft.com/v1.0"
email = "your-email@example.com"
access_token = "your-access-token"

# 构造请求URL,仅请求ID字段以最小化响应数据
url = f"{BASE_URL}/users/{email}/messages?$filter=toRecipients/any(r:r/emailAddress/address eq '{email}') or ccRecipients/any(r:r/emailAddress/address eq '{email}')&$count=true&$select=id"

headers = {
    "Authorization": f"Bearer {access_token}",
    "ConsistencyLevel": "eventual"
}

response = requests.get(url, headers=headers)
if response.status_code == 200:
    # 从响应头获取总数
    total_count = response.headers.get("@odata.count")
    print(f"发送给自己的邮件总数:{total_count}")

注意事项

  • 若仅需统计收件人为自己的邮件,可删除过滤条件中的or ccRecipients/any(...)部分
  • 确保应用已获取Mail.Read权限(委托或应用权限均可)
  • 即使邮件数量达数千封,该请求仍能高效返回计数,无需分页拉取所有邮件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:17:32