6

Gmail の IMAP API を使用してメールを検索しています。

「OR」基準を使用して、さまざまなキーワードを検索します。これは、1つのレベルのみに進む場合、つまり次のような場合にうまく機能します

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

ただし、次のような長い式を試すと機能しません

基準 OR 基準 OR 基準または基準

これは(構文を理解している限り)に変換されます

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

明確にするために、基本的に、特定の電子メールリストのいずれかから送信または送信されたすべてのメッセージが必要です

ライブラリから得られるエラーは

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

助言がありますか?

4

2 に答える 2

7

括弧は使用しないでください。

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

于 2012-10-23T12:42:40.283 に答える
4

したがって、一緒に「OR」したい N 個の式がある場合、それらの N 個の式の前に N-1 個の「OR」を付けます。

たとえば、Perl では次のようになります。

$search = join " ", ("OR") x (@exprs - 1), @exprs;
于 2016-02-13T14:34:45.563 に答える