Gmail API 历史记录请求返回草稿邮件。

4

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

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

如果我需要过滤实际的消息而不是草稿,我只需要将labelIds不包含DRAFT吗?

1个回答

2
您的第一个问题:
有人能告诉我这是否是预期行为吗?
是的,这是预期行为(已复制)。请查看关于历史记录列表的文档
用户.历史:列表 列出了对给定邮箱的所有更改历史记录。历史结果按时间顺序返回(递增的historyId)。
您的第二个问题:
如果我需要过滤实际邮件而不是草稿,我只需要做labelIds不包含DRAFT吗?
是的,有一个实际的过滤器。您可以将“labelId”参数更改为除“DRAFT”之外的任何内容,以便在历史记录中不返回草稿结果。
以下是如何正确过滤邮件而不返回草稿标签类型的简单指南:
  1. 要检查labelId的列表,请尝试此Label API测试链接,以查看您的标签列表,以确保您稍后在步骤3中使用有效的“labelId”。

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

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

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

谢谢。不确定这是否有助于我,因为我需要所有的消息 - 然后我将需要调用每个我想要的标签ID...并且许多存在于多个标签中。除非有一种指定我想要的标签的方法...? - Mike Turner
还有,为什么会返回垃圾邮件? - Mike Turner
这是一个相当老的话题,但这可能会帮助其他人。我认为你可以使用q="-label:DRAFT"来解决问题。 - chris stevens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接