使用node.js Gmail API发送现有草稿

我正在尝试使用users.drafts.send API发送已经存在的Gmail草稿。 尽pipe进行了大量的search,但我还是无法find有关请求实际外观的具体信息。 我试过的要求是:

 gmail.users.drafts.send( { 'userId': user, 'resource': { 'id': msg_id } }, callback ); 

这会导致“未find”错误。

根据似乎暗示资源草案需要在一个名为draft的子对象的search,我试着:

 gmail.users.drafts.send( { 'userId': user, 'resource': { 'draft': { 'id': msg_id } } }, callback ); 

这会导致“草稿无效”错误。 我认为这是一个更好的错误,但我仍然无法实际发送。

我已经确认消息ID和用户IDstring是正确的,并且没有任何身份validation问题。 (其他API调用工作正常。)

你的第一个例子是正确的,但我认为你错过了一些东西。

我有一个草稿。 我将用API Explorer列出它 :

请求

 GET https://www.googleapis.com/gmail/v1/users/me/drafts?access_token={ACCESS_TOKEN} 

响应

 { "drafts": [ { "id": "1527269226973690353", "message": { "id": "1531f3452626f9f1", "threadId": "1531f3452626f9f1" } } ], "resultSizeEstimate": 1 } 

如你所见,草案有两个ID。 一个常规的messageId在草稿操作时不起作用,而id是你应该使用的draftId

在所有的互联网search后,我发现了一个解决scheme:

 gmail.users.drafts.send({ auth: access_token, userId: 'me', resource: { id: draft_id, message:{ raw: base64encodedmessage } } }, callback); 

即使您想发送新的正文草稿,这也可以工作