拥有Azure应用凭据,如何用OAuth2调用Microsoft Graph API发送Office365邮件?
正确使用Microsoft Graph OAuth2发送邮件的操作指南
1. 先搞定权限配置(核心前提)
你用的是客户端凭据流(无用户交互的服务端模式),必须在Azure应用注册里配置应用权限(不是委托权限):
- 搜索添加
Mail.Send应用权限 - 配置完成后必须点击授予管理员同意,否则获取的令牌里不会包含该权限
2. 替换为正确的API端点
客户端凭据流没有用户上下文,/me完全不适用,也不能直接把/me替换成邮箱地址,要使用以下端点:
POST https://graph.microsoft.com/v1.0/users/{发件人邮箱地址}/sendMail
这里的{发件人邮箱地址}必须是当前租户内的有效邮箱账号。
3. 规范请求体格式
请求体必须符合Microsoft Graph的要求,示例如下:
{ "message": { "subject": "测试邮件", "body": { "contentType": "Text", "content": "这是通过Microsoft Graph发送的测试邮件内容" }, "toRecipients": [ { "emailAddress": { "address": "收件人邮箱@example.com" } } ] }, "saveToSentItems": true }
4. 验证令牌有效性
获取令牌后,可通过JWT解码工具查看roles字段,确认其中包含Mail.Send权限。如果没有,检查权限配置和管理员同意是否完成。
常见问题排查
- 提示“权限不足”:确认配置的是应用权限而非委托权限,且已完成管理员同意
- 提示“用户未找到”:确认
{发件人邮箱地址}是租户内存在的有效邮箱 - 请求必须携带头信息:
Authorization: Bearer {你的令牌}和Content-Type: application/json
内容的提问来源于stack exchange,提问作者Jung Ervin
相关产品推荐
相关产品推荐

