Outlook插件如何获取除选中邮件之外的其他邮件?
Outlook插件按Message ID给邮件添加分类的实现思路
客户端Office JS API方案
- 首先确认你持有的ID类型:如果是EWS ID,可通过
Office.context.mailbox.getCallbackTokenAsync({ isRest: false })获取EWS访问令牌,调用EWS的GetItem操作批量拉取指定ID的邮件实例,之后调用categories.addAsync()方法为单封邮件添加分类。 - 单封邮件操作也可直接通过
Office.context.mailbox.item.load加载指定ID的邮件项后操作,但批量场景下并发限制较严,效率较低。
提示:如果你的插件仅需要操作当前用户邮箱内的少量邮件,可优先选该方案
服务端Microsoft Graph API方案(批量场景推荐)
该方案支持操作当前用户有权访问的所有邮箱邮件,适配你的批量ID处理需求:
- 权限配置:在Azure AD注册你的应用,按需申请权限:
- 仅操作当前用户邮箱:申请委派权限
Mail.ReadWrite - 需要操作多个用户/共享邮箱:申请应用权限
Mail.ReadWrite.All并完成管理员同意
- 单封邮件添加分类调用方法:
发送PATCH请求到https://graph.microsoft.com/v1.0/me/messages/{你的message_id},请求体示例:
{ "categories": ["自定义分类名称"] }
- 批量操作优化:如果要处理大量ID,调用Graph的
$batch接口,单次请求最多可处理20个分类更新请求,大幅降低接口调用开销。
常见坑点提示
- 注意ID格式适配:Graph API使用的是REST格式的message ID,如果你持有的是旧版EWS ID,可调用
translateExchangeIds接口完成格式转换 - 分类必须提前在目标用户邮箱中创建,否则添加操作会失败,可提前调用Graph接口拉取用户现有分类列表,不存在时先创建对应分类
内容的提问来源于stack exchange,提问作者greg-e
相关产品推荐
相关产品推荐

