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

如何使用Microsoft Graph API查询发送至特定地址的邮件?

解决Microsoft Graph API过滤Outlook收件人返回400错误的问题

你的过滤语法本身是正确的,返回400错误主要是因为URL未正确编码,或者端点使用不当。以下是正确的实现方式:

正确的查询格式

针对toRecipients数组的过滤逻辑没问题,但需要确保查询参数被正确URL编码。手动编码后的完整URL示例:

https://graph.microsoft.com/v1.0/Users/{user_id}/messages/?$filter=toRecipients%2Fany%28t%3At%2FemailAddress%2Faddress%20eq%20%27target%40example.com%27%29

代码层面的最佳实践(以Python为例)

不要手动编码URL,让请求库自动处理参数,避免编码错误:

import requests

# 替换为实际值
user_id = "user@yourdomain.com"
target_email = "recipient@example.com"
access_token = "YOUR_VALID_ACCESS_TOKEN"

headers = {"Authorization": f"Bearer {access_token}"}
params = {
    "$filter": f"toRecipients/any(t:t/emailAddress/address eq '{target_email}')"
}

# 如果要查询已发送邮件,使用这个端点:
# url = f"https://graph.microsoft.com/v1.0/Users/{user_id}/mailFolders/SentItems/messages/"
url = f"https://graph.microsoft.com/v1.0/Users/{user_id}/messages/"

response = requests.get(url, headers=headers, params=params)
response.raise_for_status()  # 触发HTTP错误便于排查
messages = response.json()["value"]

# 处理返回的邮件数据
for msg in messages:
    print(f"邮件主题: {msg['subject']}")

关键注意事项

  • 确认访问令牌拥有Mail.Read权限(委托权限或应用权限均可)
  • {user_id}可以是用户的ID,也可以是用户主体名称(如user@domain.com)
  • 如果要筛选已发送给指定收件人的邮件,建议使用/mailFolders/SentItems/messages/端点,根/messages/端点默认返回收件箱内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:18:27