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

如何在Outlook插件中调用Graph API读取MIME格式电子邮件

问题1:授权报错13000解决方案

错误13000是身份API不支持,核心原因是外接程序未配置SSO所需的清单参数,或运行环境不兼容SSO,推荐优先用适配性更高的回调令牌方案:

  • 调用Office.context.mailbox.getCallbackTokenAsync时必须传入{isRest: true}参数,拿到的令牌可直接用于Graph接口鉴权,无需配置额外的SSO参数,也不需要调用Office.context.auth.getAccessTokenAsync接口
  • 确认外接程序清单中已配置ReadWriteMailbox权限,才能获取邮件完整内容的访问权限

问题2:邮件ID格式不匹配解决方案

Office.context.mailbox.item.itemId返回的是EWS格式的ID,无法直接用于Graph接口,需要做URL安全的Base64转换,转换规则如下:

  • 将ID中的+替换为-,/替换为_
  • 去除末尾所有的=填充字符
  • 转换后的ID即可直接传入Graph接口使用

完整示例代码

// EWS ID转Graph可用ID
function ewsIdToGraphId(ewsItemId) {
  return ewsItemId.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

// 获取邮件MIME内容
function getEmailMimeContent(callback) {
  // 获取可访问Graph的回调令牌
  Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, function (tokenResult) {
    if (tokenResult.status !== Office.AsyncResultStatus.Succeeded) {
      callback(tokenResult.error, null);
      return;
    }
    const accessToken = tokenResult.value;
    // 转换邮件ID
    const graphItemId = ewsIdToGraphId(Office.context.mailbox.item.itemId);
    // 调用Graph接口获取MIME
    fetch(`https://graph.microsoft.com/v1.0/me/messages/${graphItemId}/$value`, {
      headers: {
        'Authorization': `Bearer ${accessToken}`
      }
    }).then(function (res) {
      if (!res.ok) throw new Error('接口请求失败');
      return res.text();
    }).then(function (mimeContent) {
      callback(null, mimeContent);
    }).catch(function (err) {
      callback(err, null);
    });
  });
}

// 调用示例
getEmailMimeContent(function (err, mime) {
  if (err) {
    console.error('获取失败:', err);
    return;
  }
  // 此处处理获取到的MIME/EML内容
  console.log('MIME内容获取成功,长度:', mime.length);
});

注意事项

  • 该方案无1MB大小限制,支持获取完整的邮件MIME内容
  • 不需要处理CORS问题,Graph接口默认允许Outlook外接程序的跨域请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:27:01