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

如何通过MS Graph为Outlook邮件添加指定分类?

问题原因

你的代码存在两个核心问题导致分类没有成功添加:

  • Outlook 邮件的 Categories 属性是存储分类显示名称的字符串集合,不需要传入 OutlookCategory 实体对象,直接添加分类的名称字符串即可
  • 你仅在本地修改了内存中的集合属性,没有调用更新接口将改动提交到 Graph API 服务端,改动不会同步到云端邮件

正确实现代码

原有创建 master 分类的逻辑无需调整,将添加分类到邮件的部分替换为如下代码即可:

// 先拉取邮件现有分类,避免覆盖用户原有分类
var targetMessage = await graphService.Users[metadata.UserOid].Messages[m.MailId]
    .Request()
    .Select("Categories")
    .GetAsync();

// 避免重复添加同一个分类
var targetCategoryName = category.DisplayName;
if (!targetMessage.Categories.Contains(targetCategoryName))
{
    targetMessage.Categories.Add(targetCategoryName);
    // 提交修改到服务端
    await graphService.Users[metadata.UserOid].Messages[m.MailId]
        .Request()
        .UpdateAsync(targetMessage);
}

额外注意事项

  • 确保你的应用已经申请了 Mail.ReadWrite 相关权限,权限类型支持委托权限或应用程序权限
  • 如果不需要保留原有分类、或者你已经在内存中持有完整的最新分类列表,可以直接构造补丁对象提交,减少一次查询请求:
    var updateMessage = new Message
    {
        Categories = new List<string> { category.DisplayName }
    };
    await graphService.Users[metadata.UserOid].Messages[m.MailId]
        .Request()
        .UpdateAsync(updateMessage);
    

内容的提问来源于stack exchange,提问作者greg-e

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:36:02