Microsoft Graph无法用$filter获取未读邮件,请求报错如何解决?
问题解答
$filter并未被弃用
Microsoft Graph API v1.0版本的/users/{user-id}/mailfolders/inbox/messages端点完全支持$filter=isRead eq false这个查询条件,该功能没有被弃用。
报错原因分析
你遇到的"the content you are trying to view cannot be viewed as JSON"错误,大概率是以下原因导致:
- 请求未指定正确的Accept头,API返回了非JSON格式的内容(比如HTML错误页面)
- 认证token无效或权限不足,触发了API的错误页面跳转
- 请求URL格式有误(比如参数空格、占位符未替换)
解决方案
- 设置正确的请求头:在SoapUI的请求Headers中添加
Accept: application/json,强制API返回JSON格式响应。 - 验证认证信息:确认请求携带的Bearer token有效,且已授予
Mail.Read权限。如果token过期或权限不够,API会返回HTML错误页,导致JSON解析失败。 - 修正请求URL:
- 把
{user ID}替换为实际的用户ID或用户邮箱(比如john.doe@contoso.com) - 移除URL末尾的多余空格,正确格式应为:
https://graph.microsoft.com/v1.0/users/{user-id-or-email}/mailfolders/inbox/messages?$filter=isRead eq false
- 把
- 使用$search参数的注意事项:如果要用
$search查询未读邮件,格式应为$search="isRead:false",同时必须在请求头中添加ConsistencyLevel: eventual,否则会触发查询节点无效的错误。 - 先在Graph Explorer验证:先在Graph Explorer中测试该请求,确认能正常返回未读邮件列表后,再复制请求配置到SoapUI中,排除工具配置问题。
内容的提问来源于stack exchange,提问作者JAFFAR SHARIFF
相关产品推荐
相关产品推荐

