3

当我查询 Gmail API 时

results = service.users().messages().list(userId='me',q="from:xyz@wso2.com", maxResults=10).execute()

我得到了这个输出。在这里我没有收到所有消息它只返回了Thread Idid

"messages": [
  {
   "id": "1655b9b497dc76aa",
   "threadId": "165380da74833127"
  },
  {
   "id": "1655b9a7409383dd",
   "threadId": "1655b9a7409383dd"
  },
  {
   "id": "1655b9a25c441268",
   "threadId": "16470b77316be7ab"
  },
  {....

为了得到消息,我必须再次查询。这里的问题是,当我使用 Id 查询时,它返回 400 错误,但是当我使用线程时,它返回带有片段的消息。但是在文档中,他们已经明确提到我们必须提供 id

id -    string  - The ID of the message to retrieve.
  1. Thread Id 和 Id 有什么区别?
  2. 我不能查询所有字段吗?

"labelIds": [ "UNREAD", "CATEGORY_FORUMS", "INBOX" ], "snippet": "嗨,Amanda、Ruwan 和 Mifan,我们已经完成了与 Verizon 的 RFP 回合!请您查看 RFP 并开始正在做这个吗?如果我们需要让 WSO2 电信公司参与进来,请告诉我。谢谢,”,“historyId”:“5217959”,“internalDate”:“1534833021000”....

作为一个没有查询的JSON,一次又一次,使用每个ID?如果我查询那么多时间,因为我必须查询 150000 个 ID,似乎 Google API 可能会阻止我使用节流机制。

4

1 回答 1

2

从文档消息资源中为响应中的每条消息返回一个。

id string 消息的不可变 ID。

threadId string 消息所属线程的ID。要将消息或草稿添加到线程,必须满足以下条件:

  • 请求的 threadId 必须在您随请求提供的 Message 或 Draft.Message 中指定。
  • References 和 In-Reply-To 标头必须按照 RFC 2822 标准进行设置。- 主题标题必须匹配。

您不能在message.threadid上执行 message.get message.get 需要 message.id

我不能在不使用每个 ID 一次又一次查询的情况下将所有消息作为 JSON 查询吗?如果我查询那么多时间,因为我必须查询 150000 个 ID,似乎 Google API 可能会阻止我使用节流机制。

否 可以返回的 maxResults 没有限制。我认为它在 100 左右,但我没有看到它记录在案。您将不得不使用请求中返回的 nextPageToken 来获取下一页结果。您提出请求的速度是有限制的。因此,请保持合理,否则您将受到限制。

更新以响应问题编辑

我不能查询所有字段吗?

如果您在字段参数上使用 Doc运行以下命令fields=*

results = service.users().messages().list(userId='me',q="from:xyz@wso2.com", maxResults=10,fields=*).execute()

你会注意到响应是一样的

   {
   "id": "1655bb6d0f2b5f8f",
   "threadId": "1655bb6d0f2b5f8f"
    },

这就是files.list 响应中的所有字段。如果你想了解更多信息,你必须做一个message.get

Gmail 配额

由于这个原因,Gmail 的配额很大。它们中的大多数也可以扩展。

在此处输入图像描述

于 2018-08-21T08:51:21.727 回答