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

时间:2015-03-25 07:22:08

标签: javascript node.js post google-api gmail-api

我正在尝试使用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也没关系,他们正在为其他查询工作。

我的代码中出现了什么错误?我猜错误是标题。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:5)

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