问题描述
我正在尝试使用裸 python imaplib
进行复杂的 IMAP 搜索查询。
查询非常简单,我有一个电子邮件列表,我正在尝试使用这些地址查询所有邮件。
[
['OR',['FROM','email1@domain.com'],['OR','email2@domain.com'],'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)