OAuth 2.0 Playground调用Gmail API v1发邮件请求头配置咨询
问题原因
你踩了90%第一次在Playground调Gmail发信接口的人都会踩的坑:To、From、Subject这类字段是邮件内容的头部,不是HTTP请求头,你把这些字段塞到HTTP请求头里,Gmail API根本读取不到收件人信息,自然会返回Recipient address required的400错误。
可直接复用的OAuth 2.0 Playground配置
按下面的步骤配置就能跑通:
- 授权阶段:选择API范围时勾选
https://www.googleapis.com/auth/gmail.send,走完标准授权流程拿到有效Access Token - 请求基础配置:请求方法选
POST,请求URL填https://gmail.googleapis.com/gmail/v1/users/me/messages/send - HTTP请求头配置:只需要加2个字段,不要加任何和邮件内容相关的头:
Authorization: Bearer <你拿到的Access Token>Content-Type: application/json
- 请求体配置:传JSON结构,所有邮件内容都要编码后放在
raw字段里。
首先写符合RFC 2822规范的原始邮件内容,示例:
把上面整段内容做base64url编码(普通base64编码后替换To: target@example.com From: your-gmail@gmail.com Subject: 测试发信 Content-Type: text/plain; charset=utf-8 这是测试邮件的正文内容+为-、/为_、去掉末尾的=填充符即可),把编码结果放到请求体的raw字段里,最终请求体示例:
点发送就能正常发信。{ "raw": "VG86IHRhcmdldEBleGFtcGxlLmNvbQpGcm9tOiB5b3VyLWdtYWlsQGdtYWlsLmNvbQpTdWJqZWN0OiDmtYvor5Yg5Y+R5L+hCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOAoK6L+Z5piv5rWL6K+V6YKu5Lu255qE5q2j5paH5YaF5a65" }
注意事项
- 如果要发HTML格式邮件,只需要把原始邮件的
Content-Type改成text/html; charset=utf-8,正文部分替换成HTML代码再编码即可 - 不要给HTTP请求头加任何
To/From/Subject/Sender字段,加了只会干扰接口解析 - raw字段必须用base64url编码,直接传普通base64字符串会触发格式错误
内容的提问来源于stack exchange,提问作者Inside Harness
相关产品推荐
相关产品推荐

