与用于日期查询的 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 GMTWed, 25 Nov 2015 23:59:59 GMT 将是:

q = after:1448409600 AND before:1448495999

【讨论】:

以上是关于与用于日期查询的 Gmail Web UI 相比,Gmail API 未返回正确的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

与没有函数包装器的查询相比,SQL 函数非常慢

Gmail REST API 线程搜索未给出预期结果

MySql分区表 - 使用PK的日期范围之间选择与日期IN(...)子句相比非常慢

如何制作类似 Material UI 的 Gmail 任务工具栏

使用DateUtils和DateFormatUtils处理时间日期转换与SimpleDateFormat的区别

组合查询与分页查询结合应用