[英]How to set recipients with Gmail's Node.js API
盡管看起來很簡單,但我似乎無法弄清楚如何使用Google的Gmail API設置草稿的收件人。 該文檔說, users.messages Resource
對象包含一個payload
對象,該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”部分,因為文檔中說
此消息部分上的標題列表。 對於代表整個消息有效負載的頂級消息部分,它將包含標准的RFC 2822電子郵件標頭,例如“收件人”,“發件人”和“主題”。
但是,當我發出類似以下內容的請求時
"payload" : {
"headers" : [
{
"name" : "To",
"value" : "me"
// "me" should direct the draft to myself
}
]
}
至草稿的“至”部分仍為空。 有什么解決方案或建議嗎?
在您的請求中,您需要:
"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 Resource
,但是,並非所有內容都是可寫的。 只有threadId
, labelIds
和raw
是可寫對象。 事實證明,您根本不應該使用有效載荷來設置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);
}
)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.