我正在尝试使用gmailapi发送电子邮件,我正在从用户和将其转换为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>rn' +
'To: Me <ss@gmail.com>rn' +
'Subject: Hellorn'+
'Mime-Version: 1.0rn'+
'Content-Type: text/html; charset=utf-8rn' +
'Content-Transfer-Encoding: quoted-printablernrn' +
'<html><body>' +
'<h1>World</h1>' +
'</body></html>';
我在我的应用程序中使用有效的电子邮件
重要的是当我将生成的raw
粘贴到gmail api explorer、中时
它运行良好,电子邮件正在发送,但当我用相同的原始文件发送帖子请求时,它会抛出错误。
EDIT:accesstoken也很好,它们适用于其他查询。
我的代码中有什么错误?我想错误在于标头。
感谢您的帮助。
我怀疑,当您不指定Content-Type
-标头时,它默认为application/x-www-form-urlencoded
。尝试将Content-Type
自己设置为application/json
。