我正在尝试使用POST方法通过gmail API和POSTMAN发送邮件
POST https://www.googleapis.com/upload/gmail/v1/users/example@gmail.com/messages/send
但是下面出现错误:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidArgument"
"message": "Recipient address required"
}
],
"code": 400,
"message": "Recipient address required"
}
}
标题已经放入内容类型:message / rfc822
我知道这必须被编码为base64(web_safe),所以我翻译了
"From: sender.example@gmail.com\r\n" +
"To: receiver.example@gmail.com\r\n" +
"Subject: Subject Example\r\n" +
"This is content: hope you got it\r\n"
我也将它们替换为web_safe
replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
所以我得到了一个像下面的base64。 所以我把POST方法的正文放进去
{
"raw": "RnJvbTogc2VuZGVyLmV4YW1wbGVAZ21haWwuY29tDQpUbzogcmVjZWl2ZXIuZXhhbXBsZUBnbWFpbC5jb20NClN1YmplY3Q6IFN1YmplY3QgRXhhbXBsZQ0KVGhpcyBpcyBjb250ZW50OiBob3BlIHlvdSBnb3QgaXQNCg"
}
我在Google开发人员的网站上使用了“尝试使用此api”,并且可以发送它。 https://developers.google.com/gmail/api/v1/reference/users/messages/send
但是对于POSTMAN,我不能。
请帮忙吗?
答案 0 :(得分:1)
这意味着数据格式不正确。您应该尝试以下对我来说非常有用的方法。
我使用以下格式。
From: <FROM@gmail.com>
To: <TO@gmail.com>
Subject: Test Email
Test
出于测试目的,我使用https://ostermiller.org/calc/encode.html对上面的短信进行64位编码。所以我将得到如下编码的字符串
IEZyb206IDxGUk9NQGdtYWlsLmNvbT4KICAgIFRvOiA8VE9AZ21haWwuY29tPgogICAgU3ViamVjdDogVGVzdCBFbWFpbAogICAgCiAgICBUZXN0
现在是邮递员,
您必须使用https://www.googleapis.com/gmail/v1/users/<YOUR@gmail.com>/messages/send
内容类型应为json,因为您在消息正文中发送json格式。
Content-Type: application/json
体内
{
"raw": "IEZyb206IDxGUk9NQGdtYWlsLmNvbT4KICAgIFRvOiA8VE9AZ21haWwuY29tPgogICAgU3ViamVjdDogVGVzdCBFbWFpbAogICAgCiAgICBUZXN0"
}
向API发送请求后,您将收到如下响应
{
"id": "172016110a227c19",
"threadId": "172016110a227c19",
"labelIds": [
"UNREAD",
"SENT",
"INBOX"
]
}
答案 1 :(得分:0)
我认为您应该将Content-type
标头设置为application/json
。另外,不要忘记添加Authorization
标头。
答案 2 :(得分:0)
如果您想了解更多详细信息,请参考以下链接: How to send a message successfully using the new Gmail REST API?
答案 3 :(得分:0)
如果您想了解更多详细信息,请参考以下链接:Gmail API send message without using Base64 encode