Envío de E-mail en HTML con Python
Los correos electrónicos con formato HTML son ampliamente utilizados en campañas de marketing, notificaciones automáticas y comunicaciones personalizadas debido a su capacidad de incluir diseño, imágenes y botones interactivos.
A diferencia de los correos de texto plano, los mensajes en HTML permiten crear una experiencia visualmente atractiva y profesional para el destinatario.
En esta práctica, aprenderás a enviar un e-mail en formato HTML utilizando el lenguaje de programación Python. Esta habilidad es especialmente útil para desarrolladores, especialistas en marketing y administradores de sistemas que deseen automatizar el envío de correos personalizados con diseños dinámicos.
Objetivos de la práctica
Al completar esta actividad, podrás:
- Diseñar un correo electrónico en HTML que incluya estilos, enlaces y elementos interactivos.
- Configurar un servidor SMTP para enviar correos electrónicos de forma segura.
- Integrar plantillas HTML en un programa de Python para personalizar los mensajes enviados.
- Comprender cómo el formato MIME permite combinar texto e imágenes en correos electrónicos.
Contexto de uso
El envío de correos electrónicos con formato HTML tiene aplicaciones en múltiples áreas:
- Marketing Digital: Crear boletines informativos con botones de llamada a la acción (CTA) y enlaces promocionales.
- Automatización de Notificaciones: Enviar alertas o recordatorios automáticos a los usuarios de una aplicación o sistema.
- Atención al Cliente: Diseñar respuestas automatizadas con una presentación profesional.
Al dominar esta técnica, podrás optimizar la forma en que compartes información digitalmente, mejorando la experiencia del usuario y fortaleciendo tu perfil técnico en el área de desarrollo y automatización.
Requisitos previos
- Tener instalada una versión reciente de Python.
- Acceso a una cuenta de correo electrónico (por ejemplo, Gmail).
- Activar el uso de aplicaciones menos seguras en tu cuenta (si usas Gmail, habilitar acceso a aplicaciones no seguras o usar OAuth 2.0).
Paso 1: Crear el Código HTML del Correo
Crea un archivo llamado email_template.html con el siguiente contenido:
<!DOCTYPE html>
<html>
<head>
<title>Correo HTML de Ejemplo</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f9f9f9;
margin: 0;
padding: 0;
}
.container {
background-color: #ffffff;
padding: 20px;
margin: 20px auto;
width: 80%;
max-width: 600px;
border: 1px solid #ddd;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
.header {
text-align: center;
background-color: #4caf50;
color: #fff;
padding: 10px;
border-radius: 8px 8px 0 0;
}
.content {
margin: 20px 0;
}
.footer {
text-align: center;
font-size: 12px;
color: #555;
margin-top: 20px;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>¡Hola, [Nombre del Usuario]!</h1>
</div>
<div class="content">
<p>Este es un correo de prueba con formato HTML. Aquí puedes agregar contenido como texto, imágenes o enlaces:</p>
<ul>
<li>Contenido dinámico.</li>
<li>Botones de acción.</li>
<li>Estilos personalizados.</li>
</ul>
<p><a href="#" style="background: #4caf50; color: #fff; text-decoration: none; padding: 10px 20px; border-radius: 5px;">Haz clic aquí</a></p>
</div>
<div class="footer">
<p>© 2025 Ejemplo de Empresa. Todos los derechos reservados.</p>
</div>
</div>
</body>
</html>Paso 2: Escribir el Código Python
Crea un archivo llamado send_email.py y escribe lo siguiente:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Configuración del servidor SMTP
SMTP_SERVER = "smtp.gmail.com" # Servidor de Gmail
SMTP_PORT = 587
EMAIL_USER = "tu_correo@gmail.com" # Cambia esto por tu correo
EMAIL_PASS = "tu_contraseña" # Cambia esto por tu contraseña
# Crear el correo electrónico
def enviar_correo_html():
try:
# Cargar el archivo HTML
with open("email_template.html", "r", encoding="utf-8") as f:
html_content = f.read()
# Configurar el mensaje
msg = MIMEMultipart("alternative")
msg["Subject"] = "Correo de Ejemplo con HTML"
msg["From"] = EMAIL_USER
msg["To"] = "destinatario@gmail.com" # Cambia esto por el correo del destinatario
# Agregar el contenido HTML
html_part = MIMEText(html_content, "html")
msg.attach(html_part)
# Conectar al servidor y enviar el correo
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls() # Iniciar conexión segura
server.login(EMAIL_USER, EMAIL_PASS) # Iniciar sesión
server.sendmail(EMAIL_USER, msg["To"], msg.as_string())
print("Correo enviado correctamente.")
except Exception as e:
print(f"Error al enviar el correo: {e}")
# Llamar a la función
enviar_correo_html()Paso 3: Ejecutar el Código
- Abre una terminal o línea de comandos.
- Navega al directorio donde guardaste los archivos.
- Ejecuta el archivo
send_email.pycon:
python send_email.pyResultado Esperado
El destinatario recibirá un correo con el formato HTML que creaste, incluyendo los estilos y el contenido del archivo email_template.html.
Reflexión y Tareas Adicionales
- Prueba con diferentes clientes de correo (Gmail, Outlook, etc.) para asegurarte de que el diseño funciona bien.
- Personaliza el HTML para incluir imágenes o información específica.
- Investiga cómo usar una biblioteca como
Flask-Mailonodemailersi prefieres trabajar con otras tecnologías.
