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

多租户AAD应用通过Graph API跨租户发件权限咨询

跨租户使用Graph API发送邮件的权限配置方案

核心前提

你的多租户Azure AD应用已配置Application级别的Send Mail权限,但跨租户发件需完成目标租户的应用授权,同时确保目标邮箱的代发权限设置正确。

具体操作步骤

  1. 目标租户管理员完成应用授权

    • 多租户应用不会自动获得其他租户的权限,必须由目标租户(如zetaweb.in)的全局管理员或Exchange管理员完成管理员同意。
    • 授权操作:让目标租户管理员使用管理员账号访问授权URL(替换占位符为你的应用信息):
      https://login.microsoftonline.com/{目标租户ID或域名}/adminconsent?client_id={你的应用ID}&scope=https://graph.microsoft.com/.default
      
    • 同意后,你的应用将在目标租户中获得已配置的Application级权限。
  2. 配置目标邮箱的代发权限

    • 即使应用有全局Send Mail权限,仍需确保目标邮箱(joel@zetaweb.in)允许应用代发,二选一即可:
      • SendAs权限(直接以邮箱身份发送):通过Exchange Online PowerShell执行
        Add-RecipientPermission -Identity "joel@zetaweb.in" -Trustee "{你的应用ID}" -AccessRights SendAs
        
      • SendOnBehalf权限(代表邮箱发送,显示"代表XX发送"):发送Graph API PATCH请求
        PATCH https://graph.microsoft.com/v1.0/users/joel@zetaweb.in
        Content-Type: application/json
        
        {
          "grantSendOnBehalfTo": [{"id": "{你的应用ID}"}]
        }
        
  3. 代码适配调整

    • 应用权限模式下获取令牌时,需指定目标租户:将令牌请求中的tenant参数设置为目标租户ID或域名(如zetaweb.in),而非common(common更适用于用户登录场景)。
    • 发送邮件的Graph API请求路径保持不变:
      POST https://graph.microsoft.com/v1.0/users/joel@zetaweb.in/sendMail
      
    • 请求体按原有格式传入邮件内容即可。

常见问题排查

  • 目标租户找不到应用:检查应用的「支持的账户类型」是否设置为「任何组织目录中的账户和个人Microsoft账户」,确保授权URL中的应用ID正确。
  • 权限不足报错:确认目标租户已完成管理员同意,同时检查邮箱的SendAs/SendOnBehalf权限是否配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:52:16