使用多个操作数的Python imapclient搜索

使用多个操作数的Python imapclient搜索,python,search,imap,imapclient,Python,Search,Imap,Imapclient,我正在使用Python的imapclient,我需要能够搜索多个操作数。例如,假设我希望看到2018年1月6日或2018年1月13日发送的消息。我看了又看 使用上次参考中的提示,我尝试: *r_data = M.search(['OR SENTON "6-Jan-2018" SENTON "13-Jan-2018"']) r_data = M.search('OR SENTON "6-Jan-2018" SENTON "13-Jan-2018"') r_data = M.search('SE

我正在使用Python的
imapclient
,我需要能够搜索多个操作数。例如,假设我希望看到2018年1月6日或2018年1月13日发送的消息。我看了又看

使用上次参考中的提示,我尝试:

*r_data = M.search(['OR SENTON "6-Jan-2018"  SENTON "13-Jan-2018"'])
r_data = M.search('OR SENTON "6-Jan-2018"  SENTON "13-Jan-2018"')
r_data = M.search('SENTON "6-Jan-2018" OR SENTON "13-Jan-2018"')*
还有一些其他的。每次我得到:

*imaplib.error: UID command error: BAD ['Command Argument Error. 11']*

我真的不想深入研究
imapclient
代码来确定如何构造此请求。有人有什么建议吗?

我遇到了同样的问题。发现解决方案(基于):

或者更好:

r_data = M.search(['OR', 'SENTON', date(2018, 1, 6), 'SENTON', date(2018, 1, 13)])
也适用于更复杂的查询,如:

M.search(['OR', 'OR', 'FROM', 'a', 'FROM', 'b', 'FROM', 'c'])

尝试使用查询生成器:

import datetime as dt
from imap_tools import AND, OR, NOT, Q, H   

# date not in the date list (NOT(date=date1 OR date=date3 OR date=date2))
q2 = NOT(OR(date=[dt.date(2019, 10, 1), dt.date(2019, 10, 10), dt.date(2019, 10, 15)]))
# "NOT ((OR OR ON 1-Oct-2019 ON 10-Oct-2019 ON 15-Oct-2019))"

我不是肯定的,但我会尝试或(SENTON“X”)(SENTON“Y”)。此外,一些服务器破坏了搜索实现。那是什么服务器?请您澄清一下,您使用的是标准库中的imaplib还是IMAPClient()?我使用的是IMAPClient,而不是imaplib.Menno,不幸的是,我正在使用的服务器是Exchange。我会尝试一下你的建议。>>>data=M.search('OR(SENTON“6-Jan-2018”)(SENTON“13-Jan-2018”))回溯(最后一次调用):文件“”,第1行,文件“/Users/danmahoney/anaconda/lib/python2.7/site packages/imapclient/imapclient.py”,第725行,搜索返回self。\搜索(条件,字符集)引发self.error(“%s命令错误:%s%s%”(名称、类型、数据))imaplib.error:SEARCH命令错误:BAD['command-Argument error.12']>>>谢谢!这非常有用,应该会让我的生活更轻松。
import datetime as dt
from imap_tools import AND, OR, NOT, Q, H   

# date not in the date list (NOT(date=date1 OR date=date3 OR date=date2))
q2 = NOT(OR(date=[dt.date(2019, 10, 1), dt.date(2019, 10, 10), dt.date(2019, 10, 15)]))
# "NOT ((OR OR ON 1-Oct-2019 ON 10-Oct-2019 ON 15-Oct-2019))"