Python - IMAP

IMAP es un protocolo de recuperación de correo electrónico que no descarga los correos electrónicos. Simplemente los lee y los muestra. Esto es muy útil en condiciones de ancho de banda bajo. La biblioteca del lado del cliente de Python llamadaimaplib se utiliza para acceder a correos electrónicos a través del protocolo imap.

IMAP representa Internet Mail Access Protocol. Se propuso por primera vez en 1986.

Key Points:

  • IMAP permite que el programa cliente manipule el mensaje de correo electrónico en el servidor sin descargarlo en la computadora local.

  • El correo electrónico es retenido y mantenido por el servidor remoto.

  • Nos permite realizar cualquier acción como descargar, borrar el correo sin leer el correo, nos permite crear, manipular y borrar carpetas de mensajes remotas llamadas buzones de correo.

  • IMAP permite a los usuarios buscar los correos electrónicos.

  • Permite el acceso simultáneo a varios buzones de correo en varios servidores de correo.

Comandos IMAP

La siguiente tabla describe algunos de los comandos IMAP:

SN Descripción del comando
1 IMAP_LOGIN
Este comando abre la conexión.
2 CAPABILITY
Este comando solicita enumerar las capacidades que admite el servidor.
3 NOOP
Este comando se utiliza como una encuesta periódica de mensajes nuevos o actualizaciones de estado de mensajes durante un período de inactividad.
4 SELECT
Este comando ayuda a seleccionar un buzón para acceder a los mensajes.
5 EXAMINE
Es lo mismo que el comando SELECT, excepto que no se permiten cambios en el buzón.
6 CREATE
Se utiliza para crear un buzón con un nombre específico.
7 DELETE
Se utiliza para eliminar de forma permanente un buzón con un nombre determinado.
8 RENAME
Se utiliza para cambiar el nombre de un buzón.
9 LOGOUT
Este comando informa al servidor que el cliente ha terminado con la sesión. El servidor debe enviar una respuesta BYE sin etiquetar antes de la respuesta OK y luego cerrar la conexión de red.

Ejemplo

En el siguiente ejemplo, iniciamos sesión en un servidor de Gmail con credenciales de usuario. Luego elegimos mostrar los mensajes en la bandeja de entrada. Se utiliza un bucle for para mostrar los mensajes recuperados uno por uno y finalmente se cierra la conexión.

import imaplib
import pprint
imap_host = 'imap.gmail.com'
imap_user = '[email protected]'
imap_pass = 'password'
# connect to host using SSL
imap = imaplib.IMAP4_SSL(imap_host)
## login to server
imap.login(imap_user, imap_pass)
imap.select('Inbox')
tmp, data = imap.search(None, 'ALL')
for num in data[0].split():
	tmp, data = imap.fetch(num, '(RFC822)')
	print('Message: {0}\n'.format(num))
	pprint.pprint(data[0][1])
	break
imap.close()

Según la configuración del buzón de correo, se muestra el correo.