我正在尝试使用gmail-api发送电子邮件,我正在阅读来自用户和的数据
将其转换为base64url
字符串
我正在获取原始值,当我尝试使用帖子请求发送邮件时
var ss=new Buffer(message).toString('base64')
var rawdata = ss.replace(/\//g, '_').replace(/\+/g, '-');
var options={"access_token":google.accessToken,'raw':rawdata};
var res=HTTP.post('https://www.googleapis.com/gmail/v1/users/me/messages/send',{params: options});
抛出错误
{ "error": { "errors": [
{ "domain": "global",
"reason": "parseError",
"message": "This API does not support parsing form-encoded input." } ],
"code": 400, "message": "This API does not support parsing form-encoded input." } }
我发送以下参数
var message = 'From: Me <ff@gmail.com>\r\n' +
'To: Me <ss@gmail.com>\r\n' +
'Subject: Hello\r\n'+
'Mime-Version: 1.0\r\n'+
'Content-Type: text/html; charset=utf-8\r\n' +
'Content-Transfer-Encoding: quoted-printable\r\n\r\n' +
'<html><body>' +
'<h1>World</h1>' +
'</body></html>';
我在我的应用中使用了有效的电子邮件,
将生成的raw
粘贴到gmail-api explorer时重要的是,
它工作正常并且电子邮件正在发送,但是当我发送具有相同原始的发布请求时,它会抛出错误。
编辑:accesstokens也没关系,他们正在为其他查询工作。
我的代码中出现了什么错误?我猜错误是标题。
任何帮助表示感谢。
答案 0 :(得分:5)
我怀疑当您没有指定Content-Type
- 标头时,默认为application/x-www-form-urlencoded
。尝试将Content-Type
设置为application/json
。