2012-05-12 17 views
6

Estoy utilizando esto con el servidor SMTP de Gmail, y me gustaría buscar a través de IMAP correos electrónicos enviados o recibidos desde una dirección.Python IMAP Buscar desde o hacia la dirección de correo electrónico designada

Esto es lo que tengo:

mail = imaplib.IMAP4_SSL('imap.gmail.com') 

mail.login('user', 'pass') 
mail.list() 
mail.select("[Gmail]/All Mail") 

status, email_ids = mail.search(None, 'TO "[email protected]" OR FROM "[email protected]"') 

La última línea del error es: imaplib.error: SEARCH command error: BAD ['Could not parse command']

No

segura de lo que se supone que haga ese tipo de instrucción OR dentro de pitón de imaplib. Si alguien puede explicar rápidamente lo que está mal o apuntarme en la dirección correcta, sería muy apreciado.

Respuesta

14

El error que está recibiendo se genera desde el servidor porque no puede analizar correctamente la consulta de búsqueda . Para generar una consulta válida, siga el RFC 3501, en la página 49 se explica en detalle la estructura.

Por ejemplo la cadena de búsqueda sea correcta debe ser:

'(OR (TO "[email protected]") (FROM "[email protected]"))' 
+1

Gracias. Estaba buscando la sintaxis correcta para buscar (no había muchas páginas útiles en Google). – Tech163

+1

@ Tech163 De nada. Con este tipo de protocolos debe ir directamente a la fuente (RFC) para obtener la mejor información. –

+1

Parece que 'FROM' puede necesitar ser cambiado a 'HEADER FROM', etc. Solo el último funcionó para mí. –

Cuestiones relacionadas