与 Gmail 网络 UI 相比,Gmail API 未返回正确的电子邮件以进行日期查询

Gmail API not returning correct emails compared to Gmail web UI for date queries

当使用此处所述的标准查询格式时,Gmail api 和 Gmail 网络 ui 的结果不同 - https://support.google.com/mail/answer/7190

此问题专门针对参数 after/before 和 newer/older。例如,下面的 Gmail api 查询 "after:2015/11/19 before:2015/11/20" returns 与 Gmail 网络 ui 中的相同查询 运行 相比有不同的结果。网络 ui 看起来是正确的,而 api returns 第二天(20 日)的电子邮件。可能是时区对话问题?

检查过去的问题,我在这里看到了类似的东西 how to use GMAIL API query filter for datetime(服务器将查询处理为 PST 时间)。如果是这种情况,可能值得更新文档或考虑可能的解决方案。

重现问题的步骤。

  1. 在以下日期的 gmail 帐户中有一些邮件。 Inc天前后。
  2. 运行 after:2015/11/19 before:2015/11/20 在 Gmail 网站中 ui.
  3. 使用 https://developers.google.com/gmail/api/v1/reference/users/messages/list
  4. 使用 "after:2015/11/19 before:2015/11/20" 查询 Gmail api 的 q 参数
  5. 比较结果。 (当 运行 这些步骤针对英国 Gmail 帐户时,我有不同意见)

应该只能看到 19 号的邮件,但我在使用 api 时看到了 19 号和 20 号的邮件。网络 ui 按预期工作,只有 returns 封日期为 19 日的电子邮件。

仅供参考:我还使用了其他查询参数,例如 "from: example@example.com" 与 before/after 或 newer/older 参数结合使用。我想简化错误报告/问题。

另外:api 查询我使用名为 node-gmail-api 的节点模块进行查询。检查正在使用的端点的代码是 'messages' 代码:

body: 'GET ' + api + '/gmail/v1/users/me/messages/' + m.id + fields + '\n'

问题是调用的是 'messages' 而不是 'messages/list' 端点吗?根据这个问题的答案? - Why does search in gmail API return different result than search in gmail website?

这是错误/功能吗?是否有解决方法,例如使用 epoch ms. (也不在我看到的文档中)

谢谢

如果您愿意,您可以 list the messages 精确到秒:

q = after:<start_of_day_in_seconds> AND before:<end_of_day_in_seconds>

例如从 Wed, 25 Nov 2015 00:00:00 GMTWed, 25 Nov 2015 23:59:59 GMT 将是:

q = after:1448409600 AND before:1448495999