python - 使用 Gmail API 选择性地获取电子邮件
问题描述
我正在尝试获取具有特定内容的消息列表,例如计费电子邮件并处理其中的数据。为了获取这些消息,我运行以下命令
service.users().messages().list(userId=user_id, page_token=page_token, q=query).execute()
它返回所有消息。我想将我要确认的消息限制为以下标准:
- 最近两天寄出
from:
如果地址不在电子邮件地址列表中,即黑名单,例如通知、facebook,则绝对拒绝- 绝对接受如果
from:
地址在电子邮件地址列表中,即白名单 - 查看是否
subject:
匹配一组字符串
我知道我可以创建一个匹配电子邮件地址和主题 ( from:bill@pge.com AND subject:"Your bill for this month"
) 的查询,但是如上所述,随着我可以接受的供应商范围和数量的增加,黑名单和白名单会变得非常大,类似的是案例与主题。所以我的问题是:
- 查询词的数量有限制吗?
- 除了生成一个结合黑名单白名单和主题(
from:abc@this.com AND NOT from:xyz@that.com AND subject:"Your bill" AND subject:"This month's bill"
)的很长的查询字符串之外,还有其他方法可以实现吗?
注意:对于项目设置,我主要符合https://developers.google.com/gmail/api/quickstart/python
解决方案
您可以使用的查询词的数量没有记录限制。是的,您必须以编程方式创建一个长查询字符串,结合列表中的所有电子邮件。在这里 [1] 您可以检查可以使用的运算符,最好的方法是这样的:
1) 使用“after”或“newer”运算符,时间戳为当前日期前 2 天。
2)-来自:{xxx@xxx.com xxx@xxx.com ...}
3)来自:{xxx@xxx.com xxx@xxx.com ...}
4) 主题:{xxx xxx ...}
推荐阅读
- logstash - Logstash HTTP 输出失败
- python - 如何使用 python 使用 discord.py 创建调平系统?
- python - TensorFlow 优化器中的 _get_hyper 和 _set_hyper 是什么?
- sql-server - 如何在 MS Access 中存储 ftp 用户的密码?
- html - 强制带有标签的文本在表格中与另一个没有标签的单元格高度相同
- java - 从长度为 n 的字符数组生成长度为 m 的所有子序列,其中 n >= m 在 Java 语言中
- python-3.x - 使用发布请求 [python] 将压缩的 numpy 数组(zlib)发送到烧瓶服务器
- c# - 使用 OpenId、OAuth2、Cognito、.NET Core 3.1 和 Swagger 的 Invalid_request、未授权客户端
- c - CS50 CREDIT 分配代码中的问题
- javascript - 在 React 中使用 useState 挂钩后浏览器选项卡冻结