2012-10-09 15 views
5

Estoy usando la API IMAP de gmail para buscar correos.Criterios de IMAP con múltiples ORs

Uso el criterio 'O' para buscar palabras clave diferentes. Esto funciona bien si voy solo nivel, es decir, algo así como

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

, no funciona cuando intento una expresión más larga como

criterio o criterios o criterios o criterios

lo que se traduce a (por lo que yo entiendo la sintaxis)

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

para que quede claro básicamente quiero todos los mensajes que se envían bien o se envíen a cualquiera de una determinada l ist de correos electrónicos

El error que recibo de la libray es

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

alguna sugerencia?

+0

Try sin espacios entre (y OR – Max

+0

¿Alguna vez esto funcione – kkurian

+0

@kkurian aún no, trabajé alrededor de ella llamando para cada declaración por separado y luego concatenar las listas. Estoy usando un node.js IMAP lib que tendría que reescribir para seguir el consejo máximo. Lo haré más tarde probablemente y publique los resultados aquí – forste

Respuesta

4

No usar paréntesis.

IMAP utiliza la notación polaca que no les necesita:

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

Hay casos en los que se necesitan paréntesis (como IMAP y el operador puede tomar más de 2 operandos): https://www.limilabs.com/blog/imap-search-requires-parentheses

+1

Gracias por la respuesta. Llamaría a esa notación polaca , como RPN (en una calculadora al menos) pone al operador después de los operandos. –

+0

@RichardA Tiene razón. –

+0

¿Se menciona la notación polaca en el rfc? ¿Cument? –

1

Así que si tiene N expresiones que quiere "O" juntas, debería prefijar esas N expresiones con N-1 "O" s.

En Perl, por ejemplo, que serían:?

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