为什么gmail API中的搜索返回的结果与gmail网站中的搜索不同?

kra*_*r65 10 python email api gmail gmail-api

我正在使用gmail API搜索来自用户的电子邮件.我创建了以下搜索查询:

ticket after:2015/11/04 AND -from:me AND -in:trash
Run Code Online (Sandbox Code Playgroud)

当我在Gmail的浏览器界面中运行此查询时,我收到11封邮件(正如预期的那样).但是,当我在API中运行相同的查询时,我只收到10条消息.我用来查询gmail API的代码是用Python编写的,如下所示:

searchQuery = 'ticket after:2015/11/04 AND -from:me AND -in:trash'
messagesObj = google.get('/gmail/v1/users/me/messages', data={'q': searchQuery}, token=token).data
print messagesObj.resultSizeEstimate  # 10
Run Code Online (Sandbox Code Playgroud)

我将相同的消息发送到另一个Gmail地址并从该电子邮件地址进行了测试,并且(令我惊讶的是)它确实显示在使用该其他电子邮件地址的API搜索中,因此问题不在于电子邮件本身.

在通过各种测试gmail帐户无休止地通过电子邮件发送后,我认为(但不是100%肯定)浏览器界面搜索功能具有不同的定义"me".似乎在API搜索中它不包括来自具有相同名称的电子邮件地址的电子邮件,而这些结果实际上包含在浏览器搜索的结果中.例如:如果"Pete Kramer"把从电子邮件petekramer@icloud.compete@gmail.com(这都有自己的名称设置为"Pete Kramer"),它会在浏览器中搜索显示,它不会在API搜索显示.

任何人都可以确认这是问题吗?如果是这样,有没有办法绕过这个以获得与浏览器搜索返回相同的结果?或者是否有人知道为什么gmail浏览器搜索的结果与gmail API搜索不同?Al提示是受欢迎的!

Tho*_*lle 7

我怀疑是after查询参数会给你带来麻烦.2015/11/04不是有效的ES5 ISO 8601日期.你可以尝试替代方案after:<time_in_seconds_since_epoch>

# 2015-11-04 <=> 1446595200

searchQuery = 'ticket AND after:1446595200 AND -from:me AND -in:trash'
messagesObj = google.get('/gmail/v1/users/me/messages', data={'q': searchQuery}, token=token).data
print messagesObj.resultSizeEstimate  # 11 hopefully!
Run Code Online (Sandbox Code Playgroud)


rds*_*rds 2

对我来说,其q参数/messages/list与网络用户界面上的参数相同(在https://developers.google.com/gmail/api/v1/reference/users/messages/list#try-it上尝试过)

我认为问题在于你正在打电话/messages而不是/messages/list