Javascript 如何使用Gmail设置收件人';s Node.js API

Javascript 如何使用Gmail设置收件人';s Node.js API,javascript,node.js,gmail-api,Javascript,Node.js,Gmail Api,虽然看起来很简单,但我似乎不知道如何使用谷歌的Gmail API设置草稿收件人。表示users.messages资源对象包含一个payload对象,该对象包含一个headers对象,并且headers对象包含名称-值对 // example from google's gmail API documentation "payload": { "partId": string, "mimeType": string, "filename": string, "headers": [

虽然看起来很简单,但我似乎不知道如何使用谷歌的Gmail API设置草稿收件人。表示
users.messages资源
对象包含一个
payload
对象,该对象包含一个
headers
对象,并且
headers
对象包含名称-值对

// example from google's gmail API documentation
"payload": {
  "partId": string,
  "mimeType": string,
  "filename": string,
  "headers": [
    {
      "name": string,
      "value": string
    }
  ],
  "body": users.messages.attachments Resource,
  "parts": [
    (MessagePart)
  ]
},
我想您应该在这些标题中设置草稿的“To”部分,因为文档中说

此邮件部分的标题列表。对于表示整个消息负载的顶级消息部分,它将包含标准的RFC2822电子邮件头,例如To、From和Subject

但是,当我提出类似这样的请求时

"payload" : {
  "headers" : [
    {
      "name"  : "To",
      "value" : "me"
      // "me" should direct the draft to myself
    }
  ]
}
let create = (toAddress, subject, content, callback) => {
  gmail.users.drafts.create(
    {
      'userId'  : 'me',
      'resource' : {
        'message' : {
          'raw' : base64.encodeURI(
                    `To:${toAddress}\r\n` + // Who were are sending to
                    `Subject:${subject}\r\n` + // Subject
                    `Date:\r\n` + // Removing timestamp
                    `Message-Id:\r\n` + // Removing message id
                    `From:\r\n` + // Removing from
                    `${content}` // Adding our actual message
                  )
        }
      }
    },
    (err, response) => {
      // Do stuff with response
      callback(err, response);
    }
  )
}

草稿的结尾部分仍然是空的。任何解决方案或建议?

在您的请求中,您有以下内容:

“headers”:[“name”:“To”,“value”:“me”]

“headers”
应该是一个对象数组,但您的数组不包含任何对象

相反,它应该是这样的:

“headers”:[{“name”:“To”,“value”:“me”}]

就像他们的例子:

"payload": {
  "partId": string,
  "mimeType": string,
  "filename": string,
  "headers": [
    {
      "name": "To",
      "value": "me"
    }
  ],
  "body": users.messages.attachments Resource,
  "parts": [
    (MessagePart)
  ]
},

因此,我似乎误解了关于Gmail API的文档。当您向drafts.create发送请求时,您确实需要提供一个
users.messages资源
,但是,并非所有资源都是可写的。只有
threadId
labelid
raw
是可写对象。事实证明,您根本不应该使用有效负载将
设置为
,等等。您应该将它们包括在原始数据中

我的新代码看起来像这样

"payload" : {
  "headers" : [
    {
      "name"  : "To",
      "value" : "me"
      // "me" should direct the draft to myself
    }
  ]
}
let create = (toAddress, subject, content, callback) => {
  gmail.users.drafts.create(
    {
      'userId'  : 'me',
      'resource' : {
        'message' : {
          'raw' : base64.encodeURI(
                    `To:${toAddress}\r\n` + // Who were are sending to
                    `Subject:${subject}\r\n` + // Subject
                    `Date:\r\n` + // Removing timestamp
                    `Message-Id:\r\n` + // Removing message id
                    `From:\r\n` + // Removing from
                    `${content}` // Adding our actual message
                  )
        }
      }
    },
    (err, response) => {
      // Do stuff with response
      callback(err, response);
    }
  )
}

哎呀,那实际上是个打字错误。我是用我的本地代码这样写的,但当我尝试创建草稿时,结果是一样的。