Enviar correos electrónicos con un script en Python

Algunas veces necesitamos automatizar alguna tarea, como por ejemplo enviar por correo cierta informacion que nos requieran de manera periódica, existen múltiples maneras y muchos lenguajes sobre como poder realizar esta tarea, yo estaré abordando esta simple función desde algunos lenguajes de programación y como se puede programar esta tarea simple.

La mayoría de los lenguajes de programación utilizan el protocolo SMTP(Simple Mail Transfer Protocol) para realizar los envíos, el mismo protocolo que se utiliza para los clientes de correo electrónico como Outlook o Firebird.

Construyendo el Script en Python para enviar correos:

Para realizar este envió Python utiliza un modulo llamado smtplib, en las siguientes líneas escribiré cada comando y debajo colocare la explicación del comando:
import smtplib
llama dentro del script la librería smtplib necesaria

conn = smtplib.SMTP('smtp.gmail.com', 587)
Mediante la anterior linea establecemos los parámetros que nos permitirán realizar abrir la comunicación con el servidor de correo electrónico.

conn.ehlo()
Con este comando nos permite abrir y establecer la conexión, al ejecutarlo el servidor nos responderá, algo similar a:
(250, b'smtp.gmail.com at your service, [2800:40:2f:48d9:3c12:984b:609f:55bb]\nSIZE 35882577\n8BITMIME\nSTARTTLS\nENHANCEDSTATUSCODES\nPIPELINING\nCHUNKING\nSMTPUTF8')
donde si aparece al principio del mensaje el código ‘250‘ nos indica que la conexión se estableció de manera correcta.

conn.starttls()
Este comando nos permitirá iniciar la encriptación TLS que utilizaremos para enviar al servidor nuestro usuario y password mas adelante, al ejecutarlo obtendremos una respuesta como la siguiente con el codigo ‘220‘ que significa que todo esta bien:
(220, b'2.0.0 Ready to start TLS')

conn.login('correo@gmail.com', 'password')
Esta linea nos permitirá loguearnos al servidor y si todo sale bien nos devolverá un código ‘235‘ como en la siguiente respuesta de ejemplo:
(235, b'2.7.0 Accepted')

conn.sendmail('correo@gmail.com','correo@gmail.com', 'Subject: tittle\n\nHello \n\nthis is the body.')
Este comando permite enviar el correo, los 2 primeros parámetros se leen, como ‘from’, ‘to’, pero ademas tiene una particularidad, el tercer parámetro incluye el subject y el cuerpo del correo en el mismo parámetro y para que pueda tomar de manera correcta debe complirse la sintaxis ‘Subject: TITULO\n\n Cuerpo del correo’ donde los parámetros ‘\n’ es un salto de linea, si todo sale bien al ejecutar el comando se obtiene la siguiente respuesta:
{ }

conn.quit()
Este comando se utiliza para finalizar la conexión, al cerrar la conexión recibiremos un mensaje como los anteriores con el código delante ‘221

Consejo para cuando se utiliza Gmail

Cuando utilizamos una cuenta Gmail es importante crear un password para esta aplicación específicamente, además de que es la manera mas segura para cuando queramos revocar el acceso al correo electrónico cuando no queramos utilizarlo mas sin alterar nuestra contraseña general, para activar la opción solo debemos ingresar en el siguiente enlace:
https://myaccount.google.com/apppasswords

Con lo anterior ya seria posible que envíes correos electrónicos con tu propio script, puedes visitar mi repositorio publico en GitHub, o puedes escribirnos y con gusto podemos crear la automatización personalizada que necesitas.

Dejá una respuesta