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

Microsoft Graph ListMessages API无法返回全部收件箱邮件的问题求助

解决方法

1. 处理分页获取全部邮件

Microsoft Graph API 默认采用分页机制,单次请求最多返回20条邮件(可通过$top参数调整上限,最大1000)。如果收件箱邮件数量超过分页限制,只会返回第一页内容,导致部分邮件缺失。

解决方式:

  • 检查返回结果中的@odata.nextLink字段,若存在则继续请求该链接获取下一页数据,直到@odata.nextLink不存在为止。
  • 修改后的示例代码:
async function getAllUserMessages() {
  let allMessages = [];
  let nextLink = "https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages";
  
  while (nextLink) {
    const response = await axios({
      method: 'GET',
      url: nextLink,
      headers: { "Authorization": "Bearer <access_token>" }
    });
    
    allMessages = [...allMessages, ...response.data.value];
    nextLink = response.data['@odata.nextLink'];
  }
  
  return allMessages;
}

// 获取全部邮件
const messages = await getAllUserMessages();

2. 适配聚焦收件箱(Focused Inbox)

如果用户启用了Outlook的聚焦收件箱,收件箱内的邮件会被自动分到Focused和Other两个子文件夹中。直接调用inbox/messages只会返回未被归类的邮件,而Outlook UI里的收件箱是合并了这两个子文件夹的内容。

解决方式:

  • 分别获取Focused和Other文件夹的邮件再合并:
async function getFocusedAndOtherMessages() {
  const folders = ['focused', 'other'];
  let allMessages = [];
  
  for (const folder of folders) {
    let nextLink = `https://graph.microsoft.com/v1.0/me/mailFolders/inbox/childFolders/${folder}/messages`;
    while (nextLink) {
      const response = await axios({
        method: 'GET',
        url: nextLink,
        headers: { "Authorization": "Bearer <access_token>" }
      });
      allMessages = [...allMessages, ...response.data.value];
      nextLink = response.data['@odata.nextLink'];
    }
  }
  
  return allMessages;
}

3. 确保包含特殊类型邮件

如果收件箱内有会议邀请、任务请求等特殊类型邮件,可通过$filter参数确保API返回这类内容:

// 排除草稿,包含所有收到的邮件类型
const url = "https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages?$filter=isDraft eq false";

4. 验证权限与令牌有效性

虽然已配置权限,仍可通过以下方式确认:

  • 调用https://graph.microsoft.com/v1.0/me验证令牌是否有效
  • 解码JWT令牌,检查scp字段是否包含mail.read权限

内容的提问来源于stack exchange,提问作者Abu Bakker Siddiq H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:10:30