10.5. Módulo email¶
Nota
Propósito: es una libraría para administrar mensajes de correo electrónico.
El correo electrónico es una de las formas más antiguas de comunicación digital, pero sigue siendo una de las más populares. La libraría estándar de Python incluye módulos para enviar, recibir y almacenar mensajes de correo electrónico por medio de la librería email.
El módulo smtplib se comunica con un servidor de correo para entregar un mensaje. El módulo smtpd se puede utilizar para crear un servidor de correo personalizado y proporciona clases útiles para depurar la transmisión de correo electrónico en otras aplicaciones.
El módulo imaplib utiliza el protocolo IMAP para manipular mensajes almacenados en un servidor.
Proporciona una API de bajo nivel para clientes IMAP y puede consultar, recuperar, mover
y eliminar mensajes.
Los archivos de mensajes locales se pueden crear y modificar archivos mailbox usando el módulo mailbox
utilizando varios formatos estándar, incluidos los populares formatos mbox y Maildir utilizados por
muchos programas de clientes de correo electrónico.
10.5.1. Envío de correo básico¶
A continuación, un ejemplo de envió de correo electrónico, usando el servicio Gmail, usando una plantilla de correo básica basado en una cadena de caracteres:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | |
El anterior código al ejecutar debe mostrar el siguiente mensaje:
Correo enviado correctamente
Y para captura todas las excepciones posibles, muestra el siguiente mensaje:
Error: no se pudo enviar el correo
El mensaje recibido en la cuenta Gmail desde el programa email_smtplib_demo1.py
luciría de la siguiente forma:
Figura 10.1,
Mensaje recibido en la cuenta Gmail desde el programa email_smtplib_demo1.py.¶
10.5.2. Envío de correo personalizado¶
A continuación, un ejemplo de envió de correo electrónico, usando el servicio Gmail, acoplando variables en una plantilla de correo básica basado en una cadena de caracteres:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
El anterior código al ejecutar debe mostrar el siguiente mensaje:
Correo enviado correctamente
Y para captura todas las excepciones posibles, muestra el siguiente mensaje:
Error: no se pudo enviar el correo
El mensaje recibido en la cuenta Gmail desde el programa email_smtplib_demo2.py
luciría de la siguiente forma:
Figura 10.2,
Mensaje recibido en la cuenta Gmail desde el programa email_smtplib_demo2.py.¶
10.5.3. Envío de correo avanzado¶
A continuación, un ejemplo de envió de correo electrónico, usando el servicio Gmail, usando una objeto de tipo Template acoplando variables, usando diversas excepciones para manipular los posibles errores:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | |
Archivo que incluye la lista de contactos:
1 2 | |
Archivo que incluye la plantilla del mensaje:
1 2 3 4 5 6 | |
El anterior código al ejecutar debe mostrar el siguiente mensaje:
Estimado(a) Leonardo,
Este es un mensaje de prueba.
Espero tengas una gran semana!
Sinceramente
Estimado(a) Macagua,
Este es un mensaje de prueba.
Espero tengas una gran semana!
Sinceramente
Correo(s) enviado(s) correctamente
Cuando hay error de conexión al servidor SMTP, muestra el siguiente mensaje:
Error: Conexión al servidor de correo fallo: [Errno -2] Name or service not known
Cuando hay error de en las credenciales de acceso al correo, muestra el siguiente mensaje:
Error: Credenciales de acceso al correo no coinciden: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials g24-20020ab02058000000b00418c627a089sm538715ual.7 - gsmtp')
Y para captura todas las excepciones posibles, muestra el siguiente mensaje:
Error: no se pudo enviar el correo: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials h199-20020a1f9ed0000000b003b7d46d80b6sm569582vke.16 - gsmtp')
Puede ejecutar distribución binaria hello.exe generada, el cual mostrara la siguiente pantalla.
El mensaje recibido en la cuenta Gmail desde el programa emails_gmail_send.py
luciría de la siguiente forma:
Figura 10.3,
Mensaje recibido en la cuenta Gmail desde el programa emails_gmail_send.py.¶
Además de los procesos de permisos específicos de Gmail (que incluyen aplicaciones menos seguras, etc.), estas secuencias de comandos y ejemplos funcionarían con casi cualquier otro servicio de correo que proporcione conectividad SMTP, siempre que tenga la dirección del servidor y el puerto necesarios.
Importante
Usted puede descargar el código usado en esta sección haciendo clic en los siguientes enlaces:
Truco
Para ejecutar el código, abra una consola de comando, acceda al directorio donde se encuentra el programa:
proyectos/
└── email/
├── email_contactos.txt
├── email_mensaje.txt
├── email_smtplib_demo1.py
├── email_smtplib_demo2.py
└── email_smtplib_demo1.py
Si tiene la estructura de archivo previa, entonces ejecute los siguientes comandos:
python3 email_smtplib_demo1.py
python3 email_smtplib_demo2.py
python3 emails_gmail_send.py
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
¿Cómo puedo ayudar?
¡Mi soporte está aquí para ayudar!
Mi horario de oficina es de lunes a sábado, de 9 AM a 5 PM. UTM - Madrid, España.
La hora aquí es actualmente 7:35 PM UTM.
Mi objetivo es responder a todos los mensajes dentro de un día hábil.