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

如何使用AAD Graph API通过个人Outlook账户发送邮件

问题诊断

你的问题核心是AAD用户账户未配置激活的Exchange Online邮箱,导致Microsoft Graph无法找到对应的邮箱资源,所以Mail字段为空,调用SendMail接口返回ResourcesNotFound错误。

解决方案步骤
  • 确认并分配Exchange Online许可证

    1. 登录Azure门户,进入「Azure Active Directory」→「用户」,找到目标用户。
    2. 切换到「许可证和应用」选项卡,检查是否已分配包含Exchange Online的Office 365许可证(如Office 365 E3/E5、Exchange Online Plan 1/2等)。
    3. 若未分配,点击「分配许可证」,选择合适的许可证完成分配。
  • 验证邮箱激活状态
    许可证分配后需等待数分钟同步配置,可通过两种方式验证:

    1. 登录Outlook网页版(outlook.office.com),能正常进入邮箱即表示激活成功。
    2. 调用Graph API的GET /users/{userId}/mailboxSettings接口,能返回有效数据则说明邮箱就绪。
  • 代码优化建议

    1. 获取用户信息时指定所需字段,减少冗余请求:
      var user = await graphServiceClient.Users[userId]
          .GetAsync(requestConfiguration => 
              requestConfiguration.QueryParameters.Select = new[] { "id", "displayName", "mail", "mailboxSettings" });
      
    2. 提前判断Mail字段是否为空,避免后续无效操作:
      if (string.IsNullOrEmpty(user.Mail))
      {
          Console.WriteLine("用户未配置邮箱,请检查许可证分配情况");
          return;
      }
      
补充说明

使用Client Secret Credential(应用权限)调用SendMail接口时,需确保应用已在Azure AD应用注册中添加并授予Mail.Send应用权限(该权限已包含在https://graph.microsoft.com/.default范围内,前提是你已完成权限授予操作)。若权限未配置也可能引发类似错误,但你的场景更倾向于邮箱未激活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:32:05