【发布时间】:2016-02-06 18:42:27
【问题描述】:
我正在使用 gmail API 来搜索来自用户的电子邮件。我创建了以下搜索查询:
ticket after:2015/11/04 AND -from:me AND -in:trash
当我在 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
我将相同的消息发送到另一个 gmail 地址并从该电子邮件地址对其进行了测试,并且(令我惊讶的是)它确实出现在与该其他电子邮件地址的 API 搜索中,因此问题不在于电子邮件本身。
在通过各种 test-gmail 帐户无休止地发送电子邮件后,我*认为(但不是 100% 确定)浏览器界面搜索功能对 "me" 的定义不同。似乎在 API 搜索中它不包括来自具有相同名称的电子邮件地址的电子邮件,而这些结果实际上包含在浏览器搜索的结果中。例如:如果"Pete Kramer" 将电子邮件从petekramer@icloud.com 发送到pete@gmail.com(两者的名称都设置为"Pete Kramer"),它将显示在浏览器搜索中,而不会显示在API 搜索中。
谁能确认这是问题所在?如果是这样,有没有办法绕过这个以获得与浏览器搜索返回的结果相同的结果?或者有其他人知道为什么 gmail 浏览器搜索的结果与 gmail API 搜索的结果不同吗?欢迎提供建议!
【问题讨论】:
-
不记得开箱即用的确切库引用是什么,但我希望错误出现在您提供的路径中,即
'/gmail/v1/users/'+email_address+'/messages'。 -
@Torxed - 按照网上的建议,我将 email_address 更改为
me:/gmail/v1/users/me/messages。虽然这解决了一些其他问题,但它还没有解决这个问题.. :S 还有其他想法吗? -
如果设置了 maxResults 参数会发生什么?我在想它可能默认为 10。我还注意到 sizeEstimate 就是这样,结果第一页上的值可能非常不准确;只有在您对结果集进行分页时才能改进
标签: python api email gmail gmail-api