Envio de correos con contenido HTML
Puedes enviar un correo electrónico con contenido HTML en Python utilizando las bibliotecas smtplib
y email
. smtplib
te permite enviar correos electrónicos a través de un servidor SMTP, mientras que email
proporciona herramientas para crear mensajes de correo electrónico con diferentes formatos, incluido HTML.
Cómo enviar un correo electrónico con HTML en Python
-
Importar las bibliotecas necesarias:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart -
Configurar el servidor SMTP: Dependiendo del proveedor de correo que uses (Gmail, Yahoo, Outlook, etc.), deberás configurar los detalles del servidor SMTP, incluyendo la dirección del servidor, el puerto, y si es necesario, habilitar el uso de TLS o SSL.
Por ejemplo, para Gmail:
smtp_server = 'smtp.gmail.com'
smtp_port = 587 # TLS -
Iniciar una conexión con el servidor SMTP:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # Inicia TLS -
Autenticación: Inicia sesión con tu dirección de correo electrónico y contraseña utilizando el método
login()
.server.login('tu_email@gmail.com', 'tu_contraseña')
-
Crear un mensaje de correo electrónico: Utiliza la clase
MIMEMultipart
para crear un mensaje de correo electrónico con múltiples partes.msg = MIMEMultipart()
-
Configurar los detalles del mensaje:
- Establece el remitente (
From
), el destinatario (To
) y el asunto (Subject
).
msg['From'] = 'tu_email@gmail.com'
msg['To'] = 'destinatario@gmail.com'
msg['Subject'] = 'Asunto del correo' - Establece el remitente (
-
Agregar contenido HTML:
- Utiliza la clase
MIMEText
para crear una parte de contenido HTML y adjuntarla al mensaje.
html_content = '''
<html>
<body>
<h1>Hola</h1>
<p>Este es un correo electrónico con <strong>contenido HTML</strong>.</p>
</body>
</html>
'''
msg.attach(MIMEText(html_content, 'html')) - Utiliza la clase
-
Enviar el correo:
- Utiliza el método
sendmail()
desmtplib
para enviar el correo.
server.sendmail(msg['From'], msg['To'], msg.as_string())
- Utiliza el método
-
Cerrar la conexión: Después de enviar el correo, cierra la conexión con el servidor SMTP utilizando el método
quit()
.server.quit()
Ejemplo completo
Aquí tienes un ejemplo completo que muestra cómo enviar un correo electrónico con contenido HTML en Python:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Configuración del servidor SMTP
smtp_server = 'smtp.gmail.com'
smtp_port = 587 # TLS
# Datos de inicio de sesión
from_email = 'tu_email@gmail.com'
password = 'tu_contraseña'
to_email = 'destinatario@gmail.com'
# Crear el mensaje
msg = MIMEMultipart()
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = 'Asunto del correo'
# Contenido HTML del mensaje
html_content = '''
<html>
<body>
<h1>Hola</h1>
<p>Este es un correo electrónico con <strong>contenido HTML</strong>.</p>
</body>
</html>
'''
msg.attach(MIMEText(html_content, 'html'))
# Conexión y autenticación con el servidor SMTP
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # Inicia TLS
server.login(from_email, password)
# Enviar el correo
server.sendmail(msg['From'], msg['To'], msg.as_string())
# Cerrar la conexión
server.quit()
Este código muestra cómo crear un correo electrónico con contenido HTML y luego enviarlo utilizando smtplib
y email
. Puedes personalizar el contenido HTML según tus necesidades.