与用于日期查询的Gmail网页用户界面相比,Gmail API不会返回正确的电子邮件

时间:2015-11-25 09:30:45

标签: gmail-api

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

该问题专门针对/之前和之后的参数。例如,以下Gmail api查询"之后:2015/11/19之前:2015/11/20"与在Gmail网络中运行相同查询相比,返回的结果不同。 web ui看起来正确,而api从第二天(20日)返回电子邮件。可能是时区对话问题?

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

重现问题的步骤。

  1. 在gmail帐户中有一些邮件,涵盖以下日期。在几天之后和之前。
  2. 运行于:2015/11/19之前:2015/11/20在Gmail网站中。
  3. 使用"在2015/11/19之后查询Gmail API:2015/11/20"使用https://developers.google.com/gmail/api/v1/reference/users/messages/list
  4. 获取q参数
  5. 比较结果。 (我在针对英国Gmail帐户执行这些步骤时遇到了差异)
  6. 应该只看到19日的电子邮件,但是我看到使用api时在19日和20日发送的电子邮件。网络ui按预期工作,只返回19日的电子邮件。

    仅供参考:我还使用了其他查询参数,例如"来自:example@example.com"与之前/之后或更新/更旧的参数相结合。我想简化错误报告/问题。

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

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

    问题是'消息'而不是'消息/列表'正在调用端点?根据这个问题的答案? - Why does search in gmail API return different result than search in gmail website?

    这是一个错误/功能吗?是否有解决方法,如使用epoch ms。 (我也看不到文档)

    由于

1 个答案:

答案 0 :(得分:6)

如果您愿意,可以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