如何使用Gmail的Node.js API设置收件人

尽pipe看起来很简单,但似乎无法弄清楚如何使用Google的Gmail API设置草稿的收件人。 该文档说,一个users.messages Resource对象包含一个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) ] }, 

这是在这些标题,我认为你设置草稿的“到”的一部分,因为文件说

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

然而,当我提出这样的请求时,

 "payload" : { "headers" : [ { "name" : "To", "value" : "me" // "me" should direct the draft to myself } ] } 

草案的一部分仍然是空的。 任何解决scheme或build议?

在你的要求你有这个:

"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.c​​reate时,你确实需要提供一个users.messages Resource ,但是并不是所有的都是可写的。 只有threadIdlabelIdsraw是可写的对象。 事实certificate,你不应该使用有效载荷来设置“ To ,“ From ”等等。你应该把它们包含在原始内容中。

我的新代码看起来像这样

 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); } ) }