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

使用Microsoft Graph应用权限以任意用户身份发送邮件问题求助

问题根源

你在应用注册中配置的是应用级权限,但实际使用的authorization_code授权码流获取的是委派权限令牌,仅对生成授权码时登录的用户有效,配置的应用级权限并未生效,因此只能代该用户本人发信。

最优解决方案:使用客户端凭证流调用Microsoft Graph

无需为每个邮箱单独配置权限,直接支持以租户内任意启用邮件的对象(包括用户、通讯组、启用邮件的安全组等)作为发件人发信:

  1. 确认AAD应用配置
    • 保留已配置的Mail.Send应用权限,确认管理员已授予租户级同意,User.Read.All权限非发信必需可按需保留
  2. 替换令牌获取方式
    • 直接向令牌接口发送POST请求,使用客户端凭证流获取令牌,请求体格式如下:
      {
        "grant_type": "client_credentials",
        "client_id": "你的Azure应用ClientId",
        "client_secret": "你的Azure应用ClientSecret",
        "scope": "https://graph.microsoft.com/.default"
      }
      
  3. 调用发信接口
    • 仍使用原有发信地址https://graph.microsoft.com/v1.0/users/{fromAddress}/sendMail发起请求,fromAddress填写任意租户内有效邮件地址即可正常发信,无需单独配置SendAs权限

可选权限收敛配置

如果需要限制该应用仅能以特定地址发信,避免权限范围过大,可通过Exchange Online PowerShell配置应用访问策略:

  • 运行命令:New-ApplicationAccessPolicy -AppId <你的应用ClientId> -PolicyScopeGroupId <允许发信的地址/包含多个允许地址的组地址> -AccessRight RestrictAccess
  • 多地址授权可将所有允许发信的地址加入同一个启用邮件的安全组,直接以该组作为策略作用范围即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:06:02