2012-10-09 17 views
5

私はGmailのIMAP APIを使用してメールを検索しています。複数のORを持つIMAP基準

私は別のキーワードを検索するには「OR」の基準を使用しています。私は翻訳

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

のような長い表現をしようとしたとき、私は、すなわち、1つのレベルだけが

'UID SEARCH OR (FROM "[email protected]") (TO "[email protected]")' 

ような何かを行く場合、これはうまく動作しますが、それは動作しません。 (私の知る限り、構文を理解して)

'UID SEARCH OR (OR (FROM "[email protected]") (TO "[email protected]")) (OR (FROM "[email protected]") (TO "[email protected]"))' 

それを明確にするために、私は基本的にどちらかから送信されたか、与えられたLのいずれかに送信されたすべてのメッセージをしたいです電子メール

のIST私はlibrayから取得エラーが

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

任意の提案ですか?

+0

てみスペースなしの間(およびOR – Max

+0

あなたはこの作業を取得しましたが@kkurian – kkurian

+0

はまだ、私はそれぞれのために呼び出すことによって、その周りに働いていません?私はnode.js IMAP libを使用していますが、最大のアドバイスに従うために書き直す必要があります。後で実行して結果を投稿してください。 – forste

答えて

4

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

IMAPがそれらを必要としないポーランド記法を使用しています。

UID SEARCH OR OR FROM [email protected] TO [email protected] OR FROM [email protected] TO [email protected] 

括弧が必要な場合もあります(IMAP AND演算子としては、2つの以上のオペランドを取ることができます): https://www.limilabs.com/blog/imap-search-requires-parentheses

+1

答えがありがとうございます。 、RPNとして(計算上少なくとも)オペランドの後に演算子を置く。あなたは正しい –

+0

@RichardA。 –

+0

がRFCに言及したポーランド記法ですやります思い出? –

1

もしそうなら、あなたはN個の式を一緒に「OR」したい場合は、N個の式の前にN-1「OR」を付けます。 Perlで

、例えば、次のようになります。

$search = join " ", ("OR") x (@exprs - 1), @exprs; 
関連する問題