【问题标题】:Sending existing draft with node.js Gmail API使用 node.js Gmail API 发送现有草稿
【发布时间】:2016-06-10 04:30:34
【问题描述】:

我正在尝试使用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 调用工作正常。)

【问题讨论】:

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


    【解决方案1】:

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

    我有一个草稿。我会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。

    【讨论】:

    • 啊,我没有意识到草稿ID和消息ID是不同的!我会试一试。
    • @friedo 甜!没问题:)
    • 你能发布最终的解决方案吗?
    【解决方案2】:

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

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

    即使您想发送带有新正文的草稿,这也有效

    【讨论】:

      猜你喜欢
      • 2018-02-26
      • 2015-08-27
      • 2014-04-22
      • 2017-05-01
      • 2018-04-19
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      相关资源
      最近更新 更多