Gmail API ID不起作用,但线程ID起作用

时间:2018-08-21 08:44:40

标签: python google-api gmail gmail-api google-api-python-client

当我查询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错误,但是当我使用线程时,则返回带有代码段的消息。但是在documentation中,他们清楚地提到我们必须提供ID

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

“ labelIds”:[         “未读”,         “ CATEGORY_FORUMS”,         “收件箱”        ],        “摘录”:“嗨,阿曼达,鲁万和米凡,我们已经与Verizon进行了RFP竞赛!请您回顾一下RFP并开始   在做这个吗?让我知道是否需要让WSO2电信参与其中。   谢谢,”,        “ historyId”:“ 5217959”,        “ internalDate”:“ 1534833021000” ....

作为JSON而不一次又一次使用每个ID进行查询?似乎Google API可能会使用限制机制阻止我,如果我要查询大量时间,因为我必须查询150000个ID。

1 个答案:

答案 0 :(得分:2)

从文档Message resource中获得,响应中的每条消息均返回该文档。

  

id字符串消息的不变ID。

     

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

     
      
  • 必须在消息或草稿中指定请求的线程ID。随请求提供的消息。
  •   
  • 必须按照RFC 2822标准设置“引用”和“回复至”标头。   -Subject标头必须匹配。
  •   

您不能在message.threadid message.get上添加message.get

  

如果不使用每个ID一次又一次地查询,是否可以将所有消息作为JSON查询?似乎Google API可能会使用限制机制阻止我,如果我要查询大量时间,因为我必须查询150000个ID。

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

根据问题编辑进行更新

  

我不能查询所有字段吗?

如果您使用fields=* Doc on fields paramater

运行以下命令
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的配额很大。大多数都可以扩展。

enter image description here