La forma más fácil de usar imaplib con Gmail es utilizar el atributo X-GM-RAW
como se describe en la Gmail Imap Extensions page.
El proceso sería la siguiente:
Primero conecte a la cuenta con el correo electrónico y la contraseña apropiada:
c = imaplib.IMAP4_SSL('imap.gmail.com', 993)
email = '[email protected]'
password = 'spamspamspam'
c.login(email, password)
continuación, conectarse a una de las carpetas/etiquetas:
c.select("INBOX")
Si es necesario, puede listar todas las carpetas/etiquetas disponibles con c.list()
.
Por último, utilice el método de búsqueda:
gmail_search = "has:attachment eggs OR spam"
status, data = c.search(None, 'X-GM-RAW', gmail_search)
En el gmail_search
puede utilizar la misma sintaxis de búsqueda utilizado en gmail advanced search.
El comando de búsqueda devolverá el estado del comando y los ID de todos los mensajes que coincidan con su búsqueda de gmail.
Después de esto se puede recuperar cada uno de los mensajes por id con:
for id in data[0].split():
status, data = gmail.fetch(id, '(BODY[TEXT])')
Esto no es cierto. No puede hacer conn.select ("some-label-name"). –
@pyrony: Sí, puedes. Las ** etiquetas ** de Gmail están expuestas como buzones IMAP ** de nivel superior **. No estoy seguro de por qué decidieron hacerlo en lugar de exponerlos como palabras clave de IMAP, pero eso es lo que Gmail decidió hacer. – dkarp