Llego un gran momento, el momento de enviar un mail con Python, imaginad las posibilidades que se abren, desde enviar mail personalizados, masivos, por condiciones y mil cosas que se os pueden ocurrir y lo mejor es que es muy sencillo.
Para ello vamos a utilizar una librería denominada:
smtplib
La instalamos en la carpeta de Python como ya sabemos y procedemos a crear el script, el primer comando que deberemos utilizar en el “import”:
import smtplib
Para enviar un mail con Python necesitamos crear una cuenta de gmail y eliminar de esta cuenta la protección contra conexiones poco seguras, crear la cuenta es solo seguir los pasos, para permitir las conexiones poco seguras iremos a nuestra cuenta gmail como en la imagen y pincharemos en el icono de arriba a la derecha donde suele estar la foto en mi caso una letra a de color rojo.

Entrando en nuestra aparece a la izquierda un desplegable con varias opciones, igual que en la imagen, hacemos click en seguridad y bajamos hasta encontrar la pestaña de «Activar accesos», al activarla nos llegara un mail y estará ya todo preparado para que esta sea nuestra cuenta de envío.

IMPORTANTE, podéis usar vuestra cuenta personal pero recomiendo crear una nueva con este ajuste para este tipo de gestiones.
El código se compone de dos partes muy diferenciadas, una parte de creación de objetos, donde irán los datos y la otra con las funciones para enviar los objetos, para empezar hay que crear varios objetos, os recomiendo que la primera vez utilicéis los que os indico para que podáis entender el funcionamiento:
user= «tu_mail@gmail.com»
emisor= » tu_mail@gmail.com «
password= «contraseña_de_tu_correo»
receptor = «mail_de_destino»
subject= «escribe_el_asunto»
mensaje = «escribe_tu_mensaje»
server= smtplib.SMTP(«smtp.gmail.com:587»)
Excepto el entrecomillado del ultimo comando, el resto se modifican incluso se pueden cambiar con objetos del contenido solicitado. Ahora lo que debemos es contactar con el servidor de correo, son estos tres comandos:
server.ehlo()
server.starttls()
server.login(user,password)
Python inicia sesión, pero este paso puede fallar o atascarse, lo que hago es poner justo después un print con el siguiente mensaje para saber que pudo contactar con el servidor:
print(«Enviando Email»)
Este paso es solo para saber si Python pudo contactar con el servidor en el puerto 587 que es el servidor de Gmail, podría enviar ya el objeto mensaje pero no tendría asunto en el mail y no queda muy profesional por lo que creo un nuevo objeto:
header = ‘To: ‘ + receptor + ‘\n’ + ‘From: ‘ + user
header = header + ‘\n’ + ‘Subject: ‘ + subject + ‘\n’
print (header)
Este objeto solo ordena los objetos que ya tengo y hago un print para informar por pantalla a que mail lo envió, desde que mail y cuál es el asunto, así puedo detectar algún error al introducir los datos y si hiciera un envío masivo puedo ver todos los que se enviaron, el último paso es unir el objeto “header” con el objeto “mensaje”, enviarlo y salir del servidor con los siguientes comandos:
msg = header + ‘\n’ + mensaje + ‘ \n\n’
server.sendmail(emisor,receptor,msg)
server.quit()
IMPORTANTE, no mostréis nunca este código a otras personas, este código contiene vuestro mail y la contraseña del mismo, no muestro la ejecución del programa por ese motivo, con estas funciones y unido a lo anterior podéis enviar mails con un “for” en bucle o por condiciones de un “if” o cualquier cosa que se os ocurra, vamos al último punto del nivel.