使用gmail-api发送电子邮件错误:此api不支持解析表单编码的输入

send email using gmail api Error: This API does not support parsing form-encoded input

本文关键字:不支持 表单 编码 输入 api gmail-api 电子邮件 错误 使用      更新时间:2023-09-26

我正在尝试使用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>'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、中时

它运行良好,电子邮件正在发送,但当我用相同的原始文件发送帖子请求时,它会抛出错误。

EDIT:accesstoken也很好,它们适用于其他查询。

我的代码中有什么错误?我想错误在于标头。

感谢您的帮助。

我怀疑,当您不指定Content-Type-标头时,它默认为application/x-www-form-urlencoded。尝试将Content-Type自己设置为application/json