【问题标题】:send email using gmail api Error: This API does not support parsing form-encoded input使用 gmail api 发送电子邮件错误:此 API 不支持解析表单编码输入
【发布时间】:2015-05-28 18:30:57
【问题描述】:

我正在尝试使用 gmail-api 发送电子邮件,我正在从用户和 将其转换为base64url 字符串

当我尝试使用 post 请求发送邮件时,我得到了原始值

 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 中时,

它工作正常并且电子邮件正在发送,但是当我使用相同的原始请求发送发布请求时,它会抛出错误。

编辑:访问令牌也可以,它们可以用于其他查询。

我的代码中的错误是什么?我想错误与标题有关。

任何帮助表示赞赏。

【问题讨论】:

  • 检查原始数据值。我认为你必须像这样发送 replace(/\+/g, '-').replace(/\//g, '_');
  • 同样的事情。你解决了这个问题吗?

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


【解决方案1】:

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

【讨论】:

  • 当我在参数中指定内容类型时,它仍然给我一个错误。我正在使用 Alamofire
猜你喜欢
  • 1970-01-01
  • 2013-10-16
  • 2018-01-26
  • 2021-09-11
  • 2014-09-24
  • 2015-01-02
  • 2017-04-14
  • 2019-10-16
  • 2014-10-30
相关资源
最近更新 更多