具有多个OR的IMAP标准

时间:2012-10-09 23:08:09

标签: imap gmail-imap

我正在使用gmail的IMAP API来搜索邮件。

我使用“OR”条件搜索不同的关键字。如果我只去一个级别,例如

,这种方法效果很好
'UID SEARCH OR (FROM "somebody@email.com") (TO "somebody@email.com")'

然而,当我尝试更长的表达式(如

)时,它不起作用

标准或标准OR标准或标准

转换为(根据我理解的语法)

'UID SEARCH OR ( OR (FROM "somebodyelse@email.com") (TO "somebodyelse@email.com")) ( OR (FROM "somebody@email.com") (TO "somebody@email.com"))'

说清楚我基本上都希望从给定的电子邮件列表中发送或发送给所有邮件

我从libray得到的错误是

[ 'A34', 'BAD', 'Could', 'not', 'parse', 'command' ]

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

不要使用括号。

IMAP使用不需要它们的波兰表示法:

UID SEARCH OR OR FROM one@mail.com TO one@mail.com OR FROM two@mail.com TO two@mail.com

有些情况需要括号(因为IMAP AND运算符可能需要超过2个操作数): https://www.limilabs.com/blog/imap-search-requires-parentheses

答案 1 :(得分:3)

所以,如果你有N个表达式,你想要" OR"在一起,你会用N-1" OR" s。

作为前缀

例如,Perl就是:

$search = join " ", ("OR") x (@exprs - 1), @exprs;