与用于日期查询的 Gmail Web UI 相比,Gmail API 未返回正确的电子邮件
Posted
技术标签:
【中文标题】与用于日期查询的 Gmail Web UI 相比,Gmail API 未返回正确的电子邮件【英文标题】:Gmail API not returning correct emails compared to Gmail web UI for date queries 【发布时间】:2016-02-28 00:37:41 【问题描述】:使用此处所述的标准查询格式 - https://support.google.com/mail/answer/7190 时,Gmail api 和 Gmail web ui 的结果有所不同。
该问题专门针对 after/before 和 newer/older 的参数。例如,以下 Gmail api 查询“after:2015/11/19 before:2015/11/20”与在 Gmail web ui 中运行相同查询相比,返回不同的结果。 Web ui 看起来正确,而 api 从第二天(20 日)返回电子邮件。可能是时区对话问题?
检查过去的问题我在这里看到了类似的东西how to use GMAIL API query filter for datetime(服务器将查询处理为 PST 时间)。如果是这种情况,可能值得更新文档或考虑可能的解决方案。
重现问题的步骤。
-
在 gmail 帐户中有一些涵盖以下日期的邮件。前后天数。
在 Gmail 网络用户界面中运行 after:2015/11/19 before:2015/11/20。
使用https://developers.google.com/gmail/api/v1/reference/users/messages/list 查询带有“after:2015/11/19 before:2015/11/20”的Gmail api 的q 参数
比较结果。 (在针对英国 Gmail 帐户运行这些步骤时,我遇到了不同之处)
应该只看到 19 日的电子邮件,但我在使用 api 时会看到 19 日和 20 日的电子邮件。 Web ui 按预期工作,仅返回日期为 19 日的电子邮件。
仅供参考:我还使用了其他查询参数,例如“from: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. (我也没有在文档中看到)
谢谢
【问题讨论】:
欢迎来到 Stack Overflow Dan!我自己也为此苦苦挣扎,我搬到了second accuracy query。然后你可以写after:<start_of_day_in_seconds> AND before:<end_of_day_in_seconds>
。值得一试!
非常感谢 Tholle。那行得通!在 javascript 中,我使用以下内容将日期转换为 epoch var after = "2015/11/19"; var myDateAfter = new Date(after + " 00:00:00"); var myEpochAfter = myDateAfter.getTime()/1000.0;更新文档和/或使其按预期工作仍然会很好
甜蜜! :) 添加了答案。我同意,如果文档提到它会很棒。
【参考方案1】:
如果您愿意,可以list the messages 秒精度:
q = after:<start_of_day_in_seconds> AND before:<end_of_day_in_seconds>
例如从Wed, 25 Nov 2015 00:00:00 GMT
到Wed, 25 Nov 2015 23:59:59 GMT
将是:
q = after:1448409600 AND before:1448495999
【讨论】:
以上是关于与用于日期查询的 Gmail Web UI 相比,Gmail API 未返回正确的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
MySql分区表 - 使用PK的日期范围之间选择与日期IN(...)子句相比非常慢
如何制作类似 Material UI 的 Gmail 任务工具栏