如何使用登录用户的Microsoft 365实例在Teams应用中调用REST API发邮件
Microsoft Teams 应用调用自研REST API以当前用户身份发送邮件实现方案
核心逻辑
通过Teams平台自带的单点登录(SSO)能力获取当前登录用户的合法身份凭证,将凭证传递给自研REST API做身份校验后完成邮件发送,全程不需要明文存储用户名密码,也不需要调用本地设备的用户凭据。
具体实现步骤
- 第一步在Azure AD注册对应应用,配置Teams应用SSO权限:在Teams应用的
manifest.json中新增webApplicationInfo配置项,填写对应Azure AD应用的客户端ID、资源URI,同时在Azure AD后台为该应用配置openid、profile、email等必要的委托权限。 - 第二步在Teams应用前端获取用户SSO令牌:调用Teams JS SDK提供的
getAuthToken()方法,直接获取当前登录用户的JWT身份令牌,无需用户二次输入账号密码。 - 第三步发起自研REST API请求:将获取到的JWT令牌放入请求头
Authorization字段,格式为Bearer <获取到的令牌值>,同时携带邮件主题、内容、收件人列表等业务参数发起请求。 - 第四步自研REST API侧完成校验与发件:接口侧先校验传入JWT的签名、签发方、受众、有效期等核心字段,确认用户身份合法后,以当前用户的身份执行邮件发送逻辑即可。
额外说明
你找到的基于Outlook COM组件创建发送邮件的方案是桌面端Office插件的实现逻辑,和Teams SaaS应用的场景完全不匹配,可直接忽略。
如果你的业务场景中用户的邮箱是Microsoft 365邮箱,也可以在自研API侧校验用户身份后,直接用拿到的用户JWT令牌调用Graph API的发件接口完成操作,无需自己搭建底层邮件发送服务。
内容的提问来源于stack exchange,提问作者SwagiWagi
相关产品推荐
相关产品推荐

