python - IMAP 搜索查询中有多少次重叠
问题描述
我正在尝试使用裸 python 进行复杂的 IMAP 搜索查询imaplib
。
查询非常简单,我有一个电子邮件列表,我正在尝试查询所有带有这些地址的邮件。
一个简单的查询可能如下所示:
[
['OR',
['FROM', 'email1@domain.com'],
['OR',
['FROM', 'email2@domain.com'],
['FROM', 'email3@domain.com']
]]]
但是当我开始使用大量地址(超过 5 个)进行这种查询时,我得到:
SEARCH command error: BAD [b'Command Argument Error. 12']
IMAP 协议有这样的限制吗?也许是因为查询的复杂性?还是最大叠瓦层?
我的参考资料或:
- IMAP rfc:https ://datatracker.ietf.org/doc/html/rfc3501.html
- Python
imaplib
库:https ://docs.python.org/3/library/imaplib.html
解决方案
IMAP 查询限制可能在您的电子邮件服务器端。这与 imaplib 无关。
您可以尝试使用我的库中的 IMAP 查询生成器:https ://github.com/ikvk/imap_tools
它可以帮助更轻松地构建此类查询。
例如,我已经成功地尝试在(YANDEX、ZIMBRA、OUTLOOK、GOOGLE)做到这一点:
from imap_tools import MailBox, OR
with MailBox('imap.mail.com').login('test@mail.com', 'pwd') as mailbox:
for msg in mailbox.fetch(OR(from_=['1@a','2@a','3@a','4@a','5@a','6@a','hello@ya.ru'])):
print(msg.date)
推荐阅读
- html - 如何使工具提示出现在下方而不是覆盖它?
- python - 检查一个单词是否在元组列表中至少出现两次?
- r - 如何将自定义函数应用于我的数据框的每一列
- angular - 如何为自定义 Angular 验证器提供异步参数
- angular - Typescript 对象动态分配更改字段名称
- python - 如何为用户创建选择某个类别的机会,并打印出结果
- c# - 使用 Sharepoint CSOM,如何在按 Id 检索内容类型时检查 null
- android - requestLocationUpdates() 在真正的智能手机上不起作用
- c# - 如何使用 Azure 服务总线配置 EventBusServiceBus?
- python - 在 WHERE 子句中传递一个列表 python mysql