Enviar emails con Python es muy sencillo y sólo debes agregar ciertos parámetros para que esto funcione.
Se debe tener a la mano un servidor SMTP o bien una cuenta de Gmail que admita envío de email usando dirección de email y clave de acceso.
Primero se importan las librerías necesarias:
#Enviar email con Python
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
from email.mime.multipart import MIMEMultipart
Recordemos que para importar librerías en Python antes deben estar instaladas usando PIP.
Enseguida debemos configurar los parámetros del servidor SMTP:
# CONFIGURACIÓN DEL SERVIDOR SMTP
smtp_server = "mail.server.com" #O tu servidor smtp de Gmail
smtp_port = 587 # Puerto para TLS
smtp_user = "info@gmail.com" #O tu dirección de Gmail
smtp_password = "*******" # Tu clave de correo electrónico
Después se debe crear el mensaje. el emisor y receptor:
# Crear el mensaje y el receptor
subject = "Hola, te escribo desde mi programa de Python"
body = "ESpero que encuentres este curso interesante"
sender_email = "info@devwapps.com"
receiver_email = "emoralest@gmail.com" #La persona que recibe el correo
Ahora debemos escribir el objeto MultiPart con el cual el servidor SMTP podrá enviar correctamente el correo al receptor:
# CREAR EL OBJETO MULTIPART
message = MIMEMultipart()
message['From'] = sender_email
message['To'] = receiver_email
message['Subject'] = subject
#Hack , sin la fecha el scritp lanza error
message['Date'] = formatdate(localtime = True)
# Adjuntar el mensaje
message.attach(MIMEText(body, 'plain')) #O HTML según sea el caso
El objeto MultiPart debe tener la propiedad "Date" de lo contrario el mensaje no se entregará.
Y finalmente iniciaremos la conexión con el servidor y enviaremos el mensaje. En caso de error debemos capturar el mensaje de error y mostrar qué salió mal:
# Iniciar la conexión al servidor SMTP
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() #Iniciar el modo seguro TLS
server.login(smtp_user, smtp_password) #Inciar sesión en el servidor smtp
text = message.as_string() #Convertir el mensaje a texto
server.sendmail(sender_email, receiver_email, text) #Enviar el correo
print("Correo enviado con éxito")
except Exception as e:
print(f'Error al enviar el correo. Causa: {e}')
finally:
server.quit() #Cerrar la conexión al servidor SMTP
Eso es todo.
En caso de que presente problemas este script en python para enviar emails, házmelo saber.
El código lo puedes descargar en el repositorio de Github.
Comentarios