使用node.js Gmail API

时间:2016-02-26 19:53:17

标签: javascript node.js google-api gmail-api

我正在尝试使用users.drafts.send API发送已存在的Gmail草稿。尽管进行了大量搜索,但我还是找不到有关请求实际应该是什么样子的大量具体信息。我试过的请求是:

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

这会导致“未找到”错误。

基于一些似乎暗示draft resource需要在名为draft的子对象中的搜索,我尝试过:

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

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

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

2 个答案:

答案 0 :(得分:2)

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

我有一份草稿。我会list it with the 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

答案 1 :(得分:0)

在所有互联网上搜索后,我找到了一个解决方案:

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

即使你想发送带有新身体的草稿

,这也有效