Gmail API 历史请求返回草稿

Posted

技术标签:

【中文标题】Gmail API 历史请求返回草稿【英文标题】:Gmail API history request returning Drafts 【发布时间】:2017-11-29 10:34:44 【问题描述】:

我发布了一个关于返回无效历史 ID 的 API 的问题。我试图弄清楚这一点。我认为 id 在消息获取请求中无效,因为这些不是真正的消息,而是草稿。我不知道为什么历史列表会返回 messagesAdded 请求的草稿。有人可以告诉我这是否是预期的行为吗?


 "history": [
  
   "id": "10946109",
   "messages": [
    
     "id": "15cc8cd840c2945a",
     "threadId": "15cc5ccf65733c7f"
    
   ],
   "messagesAdded": [
    
     "message": 
      ...
      "labelIds": [
       "SENT"
      ]
     
    
   ]
  ,
  
   "id": "10975146",
   "messages": [
    
     ...
    
   ],
   "messagesAdded": [
    
     "message": 
      ...
      "labelIds": [
       "DRAFT"
      ]
     
    
   ]
  

如果我需要过滤实际消息 - 而不是草稿,我是否只做 labelIds 不包含草稿?

【问题讨论】:

【参考方案1】:

你的第一个问题:

谁能告诉我这是否是预期的行为?

是的,这是预期行为(已复制)。检查这个Document关于历史列表:

Users.history: 列表

列出对给定邮箱的所有更改的历史记录。历史结果 按时间顺序返回(增加 historyId)。


你的第二个问题:

如果我需要过滤实际消息 - 而不是草稿,我是否只做 labelIds 不包含草稿?

是的,有一个实际的过滤器。您可以将“labelId”参数更改为“DRAFT”以外的任何参数,这样它就不会在历史记录中返回草稿结果。

以下是关于如何在不返回草稿标签类型的情况下正确过滤邮件的简单指南:

    要检查您的 labelId 列表,请尝试使用 Label API Test Link 查看您的标签列表,以确保稍后通过执行 API 在第 3 步中使用有效的“labelId”。

    通过执行Message List API获取“historyId”的值,检索消息列表然后获取一个id然后使用Message Get API 通过输入 ID 来检索“historyId”。确保 labelId 不是“DRAFT”类型,否则您必须从列表中获取另一个 id,以避免返回“DRAFT”类型。

    然后执行History API Test Link。输入您的消息的“userId”和“startHistoryId”(确保将“startHistoryId”的值减去 1)并使用更改“labelId”从您在第 2 步中从 GET API 检索到的标签列表中的一个,将“historyTypes”更改为“messagesAdded”,然后点击执行。

它应该返回正在输入的“labelId”下的消息列表,而不是“DRAFT”类型。

【讨论】:

谢谢。不确定这是否会有所帮助,因为我需要所有消息 - 所以我需要使用我想要的每个标签 ID 进行调用......并且许多标签将存在于多个标签中。除非有办法指定我想要哪些标签...? 另外 - 为什么会返回垃圾邮件? 这是一个相当古老的话题,但这可能对其他人有所帮助。我认为您可以摆脱 q="-label:DRAFT"。

以上是关于Gmail API 历史请求返回草稿的主要内容,如果未能解决你的问题,请参考以下文章

Gmail 历史记录列表未提供完整数据

Gmail API 后端错误:草稿在同时更新时损坏?

如何在浏览器中打开使用 Gmail API 创建的草稿?

Facebook 图形 API 不会返回朋友的工作历史

带有 .Net 客户端库的 Gmail api:缺少草稿消息 [400]

使用 Gmail API 创建的草稿邮件中未呈现图像