2016-11-07 2 views
1

Как бы это ни казалось, я не могу понять, как настроить получателей черновика с помощью API Gmail Google. В documentation указано, что объект users.messages Resource содержит объект payload, который содержит объект headers, и что объект headers содержит пары имя-значение.Как установить получателей с помощью API Node.js Gmail

// 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, такие как To, From и Subject.

однако, когда я делаю запрос, который выглядит примерно так

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

в К части проекта по-прежнему остается пустым. Любое решение или совет?

ответ

1

Так, оказалось, что я был искажая документации по API Gmail. Когда вы отправляете запрос на 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); 
    } 
) 
} 
1

В запросе у вас есть это:

"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) 
    ] 
}, 
+0

Woops, что было на самом деле опечатка. Я пишу в своем локальном коде таким образом, но те же результаты, когда я пытаюсь создать черновик. –

Смежные вопросы