400 错误。需要收件人地址。 JavaScript

Posted

技术标签:

【中文标题】400 错误。需要收件人地址。 JavaScript【英文标题】:400 error. Recipient address required. JavaScript 【发布时间】:2018-08-14 18:47:51 【问题描述】:

我在 Gmail API 中逐步提出一个简单的请求。

根据所有指示,我打了这个电话:

var request = gapi.client.gmail.users.messages.send(
    'userId': 'me',
    "payload": 
    "headers": [
             
              "name": "To",
              "value": "########@gmail.com"
             
           ],
     'raw': 'SEVMTE8gTVkgREVBUiBGUklFTkQ='
     );

request.then(()=>console.log('yep'))

但是收到错误:


   "error": 
   "errors": [
     
       "domain": "global",
       "reason": "invalidArgument",
       "message": "Recipient address required"
     
   ],
   "code": 400,
   "message": "Recipient address required"
  

【问题讨论】:

【参考方案1】:

Users.messages: send 中说明了在 Gmail API 中发送电子邮件的正确格式:

function sendMessage(userId, email, callback) 
  // Using the js-base64 library for encoding:
  // https://www.npmjs.com/package/js-base64
  var base64EncodedEmail = Base64.encodeURI(email);
  var request = gapi.client.gmail.users.messages.send(
    'userId': userId,
    'resource': 
      'raw': base64EncodedEmail
    
  );
  request.execute(callback);

有关如何使用此方法的更生动示例,请查看此SO post:

[...]完整的消息需要在raw参数中传递,见例子:

From: John Doe <jdoe@machine.example> 
To: Mary Smith <mary@example.net> 
Subject: Saying Hello 
Date: Fri, 21 Nov 1997 09:55:06 -0600 
Message-ID: <1234@local.machine.example>

This is a message just to say hello. So, "Hello". 

所以在对完整消息进行base64编码后,将其传递给raw参数而不使用任何其他参数,它就可以正常工作了。

【讨论】:

将整个信息编码为 base64 以解决发送问题。万分感谢。你能帮我发一封html信吗? 我已经知道如何发送 html 信件了。添加 Content-Type: text/html; charset=utf-8 变成了一个决议。再次感谢您/

以上是关于400 错误。需要收件人地址。 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

收件人地址需要代码”:400 在 Laravel PHP 中使用 Gmail API 发送电子邮件

发送消息/参数错误需要 SMTP 收件人地址

收件人地址需要带有 JavaScript 的 gmail api

尝试使用服务帐户读取 GMAIL 时出现错误代码 400

无头件是啥意思

SMTP 错误:尝试使用 python 和 postfix 发送电子邮件时出现“收件人地址被拒绝”