2012-10-09 24 views
5

Korzystam z interfejsu IMAP API Gmaila do wyszukiwania wiadomości.Kryteria IMAP z wieloma OR

Używam kryteriów "LUB" do wyszukiwania różnych słów kluczowych. Działa to dobrze, jeśli pójdę tylko jeden poziom, czyli coś podobnego

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

Jednak to nie działa, gdy próbuję dłuższego wyrażenia jak

kryteriów lub kryteriów lub kryteriów lub kryteriów

co przekłada do (o ile mi zrozumieć składnię)

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

aby było jasne, ja po prostu chcę wszystkie wiadomości, które są albo wysłane od lub wysłane do każdego danego l Zestawienie maili

Błąd otrzymuję od libray jest

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

jakieś sugestie?

+0

Spróbuj bez przestrzeni między (i OR – Max

+0

Czy kiedykolwiek uzyskać to do pracy – kkurian

+0

@kkurian jeszcze nie pracowałem wokół niego wywołując dla każdego oświadczenie osobno, a następnie łączenie list.A używam biblioteki IMAP node.js, które musiałbym przepisać, aby wykonać maksymalną poradę, zrobię to później prawdopodobnie i opublikuję wyniki tutaj – forste

Odpowiedz

4

Nie używaj nawiasów.

IMAP używa polskiego notacji, które ich nie potrzebują:

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

Istnieją przypadki, gdzie są potrzebne nawias (IMAP i operator może trwać dłużej niż 2 argumenty): https://www.limilabs.com/blog/imap-search-requires-parentheses

+1

Dziękuję za odpowiedź. Nazwałbym tę polską notację , jak RPN (przynajmniej na kalkulatorze) stawia operatora po operandach –

+0

@RichardA Masz rację –

+0

Czy notacja polska jest wymieniona na rfc do cument? –

1

więc jeśli mają N wyrażeń, które chcesz "LUB" razem, to prefiks tych N wyrażeń przez N-1 "OR" s.

W Perl, na przykład, że będzie:?

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