Python para principiantes

14.2. Envío de e-mail desde Python

Para enviar e-mails desde Python, éste nos provee smtplib, otro módulo de la librería estándar de Python, quien nos permitirá enviar mensajes de correo electrónico, incluso, en formato HTML.

Solo necesitaremos:

  • Crear un objeto smtplib.SMTP el cuál recibirá como parámetro de su método constructor, el host (localhost).
  • Crear un mensaje de correo
  • Enviar el mensaje mediante una llamada al método sendmail del objeto SMTP.

Más fácil es mirando el código:

# -*- coding: utf-8 -*- 
import smtplib 

remitente = "Desde gnucita <[email protected]>" 
destinatario = "Mama de Gnucita <[email protected]>" 
asunto = "E-mal HTML enviado desde Python" 
mensaje = """Hola!<br/> <br/> 
Este es un <b>e-mail</b> enviando desde <b>Python</b> 
"""

email = """From: %s 
To: %s 
MIME-Version: 1.0 
Content-type: text/html 
Subject: %s 

%s
""" % (remitente, destinatario, asunto, mensaje) 
try: 
    smtp = smtplib.SMTP('localhost') 
    smtp.sendmail(remitente, destinatario, email) 
    print "Correo enviado" 
except: 
    print """Error: el mensaje no pudo enviarse. 
    Compruebe que sendmail se encuentra instalado en su sistema"""

Así de simple, enviamos un e-mail con Python:

1) Importamos el módulo smtplib:

import smtplib

2) Luego, definimos las variables necesarias para el envío del mensaje (remitente, destinatario, asunto y mensaje -en formato HTML-):

remitente = "Desde gnucita <[email protected]>" 
destinatario = "Mama de Gnucita <[email protected]>" 
asunto = "E-mal HTML enviado desde Python" 
mensaje = """Hola!<br/> <br/> 
Este es un <b>e-mail</b> enviando desde <b>Python</b> 
"""

3) A continuación, generamos el e-mail con todos los datos definidos anteriormente:

email = """From: %s 
To: %s 
MIME-Version: 1.0 
Content-type: text/html 
Subject: %s 
%s
""" % (remitente, destinatario, asunto, mensaje)

4) Y finalmente, creamos un objeto smtp y realizamos el envío:

smtp = smtplib.SMTP('localhost')
smtp.sendmail(remitente, destinatario, email)

14.2.1. Envío de e-mails a múltiples destinatarios

Para enviar un e-mail a múltiples destinatarios, solo será necesario generar una lista con los destinatarios:

destinatarios = ['Persona A <maildepersonaA>', 'Persona B <maildepersonaB>']

14.2.2. Agregar una dirección de respuesta diferente

Cuando generamos el e-mail, es necesario saber, que todo tipo de cabeceras válidas, pueden agregarse. Incluso Reply-To:

email = """From: %s 
To: %s 
Reply-To: [email protected]
MIME-Version: 1.0 
Content-type: text/html 
Subject: %s

%s
""" % (remitente, destinatario, asunto, mensaje)

Copyright (c) 2011-2013 Eugenia Bahit. La copia y redistribución de esta página se permite bajo los términos de la licencia Creative Commons Atribución NoComercial SinDerivadas 3.0 Unported siempre que se conserve esta nota de copyright.