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

如何在后台进程中通过Graph API仅从指定用户账户发送邮件

可行实现方案

方案1:应用权限+Exchange Online应用访问策略(推荐)

该方案不需要修改原有调用逻辑,仅通过额外的访问限制实现最小权限管控,支持指定多个可发信用户,是微软官方推荐的实现方式。
操作步骤如下:

  • 完成你原计划的前三步:注册Azure AD应用、申请Mail.Send应用权限、获取租户管理员同意
  • 由Exchange全局管理员通过PowerShell连接到Exchange Online
  • 创建一个邮件安全组,将所有允许应用作为发件人的用户邮箱加入该组
  • 执行如下命令创建应用访问策略,限制该应用仅能访问该安全组内的邮箱:
    New-ApplicationAccessPolicy -AppId <你的应用客户端ID> -PolicyScopeGroupId <安全组邮件地址> -AccessRight RestrictAccess -Description "限制Azure Function发信应用仅访问授权发件人邮箱"
    
  • 执行如下命令验证策略是否生效:
    Test-ApplicationAccessPolicy -Identity <非授权用户邮箱,例如CEO邮箱> -AppId <你的应用客户端ID>
    
    如果返回AccessCheckResult: Denied即代表限制生效,此时应用调用Graph API指定非授权用户作为发件人时,会直接返回403错误,完全规避越权风险。

方案2:单固定发件人场景使用ROPC流

如果你的应用仅会使用同一个固定服务账号发信,且该服务账号未启用MFA,可以不用申请应用权限,改用资源所有者密码凭据(ROPC)流获取该指定用户的令牌,调用/me/sendMail接口发信,此时应用权限完全限定在该用户的权限范围内,不可能越权使用其他用户发信。
C#代码可以直接使用Graph SDK的UsernamePasswordCredential初始化客户端,无需修改核心发信逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:45:06