Gmail API ID 不工作,但线程 ID 工作

Posted

技术标签:

【中文标题】Gmail API ID 不工作,但线程 ID 工作【英文标题】:Gmail API ID is not working but and thread ID is working 【发布时间】:2019-01-27 09:59:59 【问题描述】:

当我查询 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 错误,但是当我使用线程时,它返回带有 sn-p 的消息。但是在documentation中,他们已经明确提到我们要给出id

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

“labelIds”:[ “未读”, "CATEGORY_FORUMS", “收件箱” ], “sn-p”:“嗨,Amanda、Ruwan 和 Mifan,我们已经完成了与 Verizon 的 RFP 回合!请您查看 RFP 并开始 在做这个吗?如果我们需要让 WSO2 电信公司参与进来,请告诉我。 谢谢,”, "historyId": "5217959", “内部日期”:“1534833021000”....

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

【问题讨论】:

【参考方案1】:

来自文档Message resource,响应中的每条消息都返回一个。

id string 消息的不可变ID。

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

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

你不能在 message.threadid 上使用message.get message.get 需要一个 message.id

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

没有可以返回的 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 的配额很大。其中大部分还可以扩展。

【讨论】:

"你不能在线程 id 上发送 message.get 需要 message.id",但尝试它不起作用。他们提到的ID是threadid @DalmTo developers.google.com/gmail/api/v1/reference/users/messages/get @Sathiyakugan 你已经编辑了你的问题,我现在更新了我的答案。 所以即使我在一次查询中获得了 100 个 id 以获取那些我必须再次查询 100 次的字段,不是吗? 基本上。欢迎来到烦人的 Gmail api 开发世界:( 重要提示:如果您需要申请延长配额,请尽早申请,当您达到配额的 80% 时,可能需要一个月才能获得批准。

以上是关于Gmail API ID 不工作,但线程 ID 工作的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Gmail API 发送回复

Drive Rest Api正在使用一个电子邮件ID,但不适用于其他gmail ID

GMail API - messages().list() 仅返回消息 ID

Google gmail 列表 API 仅返回 id 和 threadId,根据文档,我没有在消息中收到有效负载

通过 Mailcore 2 获取 Gmail:线程 ID、消息 ID 和 UID

Gmail API 连接