Python imapclient多操作数搜索报错,求正确查询格式指导
解决imapclient多OR条件搜索的问题
问题出在IMAP搜索语法的二元OR操作符要求上——IMAP的OR必须严格对应两个条件组,每个组需要用括号包裹,而你之前的写法没有正确分组,导致服务器无法解析命令。
给你两种可靠的写法:
方法1:用imapclient的嵌套列表语法(推荐)
imapclient支持用嵌套列表来表示带括号的查询,它会自动帮你转换成符合IMAP规范的命令,不用手动处理括号和引号:
r_data = M.search(['OR', ['SENTON', '6-Jan-2018'], ['SENTON', '13-Jan-2018']])
如果要扩展到更多日期(比如3个及以上),只需要嵌套OR即可:
# 搜索1月6日、13日、20日的邮件 r_data = M.search(['OR', ['SENTON', '6-Jan-2018'], ['OR', ['SENTON', '13-Jan-2018'], ['SENTON', '20-Jan-2018']]])
方法2:直接传入符合IMAP规范的字符串
如果你更习惯写原生IMAP查询字符串,记得给每个条件组加上括号,并且整体用括号包裹:
r_data = M.search('(OR (SENTON "6-Jan-2018") (SENTON "13-Jan-2018"))')
这两种写法都能让IMAP服务器正确解析你的搜索条件,不会再抛出Command Argument Error。
内容的提问来源于stack exchange,提问作者catdude
相关产品推荐
相关产品推荐

