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.