关于Gmail API发送邮件的请求体格式咨询(非Google客户端库实现方式)
直接调用Gmail API发送邮件的请求体示例及说明
没问题!既然你已经搞定了OAuth2认证和令牌,那直接调用Gmail API发邮件其实没那么复杂,我给你拆解清楚请求的各个部分,重点把请求体的格式讲明白,保证你一看就懂。
1. 基本请求信息
- 请求方法:
POST - 请求URL:
https://gmail.googleapis.com/gmail/v1/users/{userId}/messages/send- 这里的
{userId}可以直接替换成你的邮箱地址,或者用me来代表当前OAuth2认证的用户,非常方便
- 这里的
2. 必须携带的请求头
请求里一定要包含这两个关键头:
Authorization: Bearer {你的OAuth2访问令牌}(把{你的OAuth2访问令牌}换成你实际拿到的令牌)Content-Type: application/json
3. 请求体核心示例
Gmail API要求邮件内容是经过URL安全Base64编码的RFC 2822格式邮件,所以请求体的结构非常简洁,只有一个raw字段:
{ "raw": "RnJvbTogIlNvbWUgRGVtbyIgPHNvbWUtZGVtbzEyM0BnbWFpbC5jb20+ClRvOiAiVXNlciIgPHVzZXJAZXhhbXBsZS5jb20+ClN1YmplY3Q6IFRlc3QgTWFpbCB0byBHbWFpbCBBUElUaW1lOiBEZWN1c3Npb24sIDEzIEp1bHkgMjAyNCAxMzowMDowMCBHTVQKDjxoZWxsbD4KPGJvZHk+CjxpZD5IZWxsbywgVXNlciE8L2lkPgo8L2JvZHk+CjwvaGVsbG8+" }
解码后对应的原始邮件内容
上面的Base64字符串解码后,就是标准的邮件格式,内容如下:
From: "Some Demo" some-demo123@gmail.com
To: "User" user@example.com
Subject: Test Mail to Gmail API
Time: Decusion, 13 July 2024 13:00:00 GMTHello, User!
4. 如何生成符合要求的raw值?
步骤很直观,分三步:
- 按照RFC 2822格式写好完整的邮件内容,包括发件人、收件人、主题、正文(支持纯文本或HTML),比如纯文本版的原始内容:
From: me@my-domain.com To: friend@their-domain.com Subject: Hello from Gmail API Content-Type: text/plain; charset="UTF-8" Hey there! This is a test email sent directly via Gmail API without client libraries.
- 将这段内容转换成UTF-8编码的字节流
- 对字节流进行URL安全的Base64编码(注意:要把普通Base64里的
+替换成-,/替换成_,并去掉末尾多余的=符号)
5. 几个关键注意事项
- 发件人必须和你OAuth2认证的邮箱账号一致,否则会触发权限报错
- 如果要发送HTML邮件,记得在邮件头里加上
Content-Type: text/html; charset="UTF-8",正文直接写HTML代码即可 - 确保你的OAuth2访问令牌已经申请了
https://www.googleapis.com/auth/gmail.send的权限范围,没有这个权限的话API会直接拒绝请求
内容的提问来源于stack exchange,提问作者Try Something New
相关产品推荐
相关产品推荐

