Skip to main content

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

  1. Importar las bibliotecas necesarias:

    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
  2. 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
  3. Iniciar una conexión con el servidor SMTP:

    server = smtplib.SMTP(smtp_server, smtp_port)
    server.starttls() # Inicia TLS
  4. 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')
  5. 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()
  6. 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'
  7. 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'))
  8. Enviar el correo:

    • Utiliza el método sendmail() de smtplib para enviar el correo.
    server.sendmail(msg['From'], msg['To'], msg.as_string())
  9. 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.