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)