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

开发调用Microsoft Graph发邮件的多租户ASP.NET Web API问题咨询

多租户ASP.NET应用调用Microsoft Graph代发邮件问题解答

问题1:若要支持不同租户的用户使用,我是否需要注册类型为「Multi-tenant」的Azure App?

  • 是,必须注册多租户类型的Azure AD应用。如果使用单租户配置,仅有你所属Azure租户内的用户可以完成授权流程,其他租户的用户登录时会直接触发「用户不在当前租户内」的报错,无法正常使用功能。

问题2:要实现代用户发送邮件的能力,需要申请哪些scope/权限?

  • 你现有配置的offline_access、user.read、mail.read保留的基础上,额外增加Mail.Send权限即可。
  • 补充提示:你当前方案中直接存储Access Token的方式存在有效期问题(Access Token默认有效期仅1小时),保留offline_access权限后可同时获取Refresh Token存储,每次发信前如果Access Token过期,可通过Refresh Token刷新获取有效凭证,无需用户重复授权。

问题3:Azure侧我需要配置Delegated permissions(委托权限)还是Application permissions(应用程序权限)?

  • 配置委托权限即可。你的场景是用户主动登录授权后,应用代当前登录用户执行发信操作,完全符合委托权限的使用场景,权限范围仅对授权用户生效,安全可控。
  • 应用程序权限适用于无用户登录的服务后台场景,需要全局管理员授权,且默认拥有租户内所有用户邮箱的操作权限,权限等级过高,不适用于你的业务场景。

问题4:如何确保已发送的邮件同步保存到对应用户的Outlook「Sent Items」文件夹中?

  • 调用Microsoft Graph的sendMail接口时,在请求体中显式指定saveToSentItems参数为true即可。该参数默认值也为true,显式指定可以避免接口行为变更带来的异常。示例请求结构参考:
{
  "message": {
    "subject": "邮件主题",
    "body": {
      "contentType": "Text",
      "content": "邮件正文"
    },
    "toRecipients": [
      {
        "emailAddress": {
          "address": "收件人邮箱"
        }
      }
    ]
  },
  "saveToSentItems": true
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:15:03