Envio de mails con formato html desde Python

Python es un lenguaje de programación muy potente y sencillo de aprender. Ademas, cuenta con una serie de librerías y módulos con funciones ya implementadas para hacer determinadas acciones comunes. Entre ellas, una que yo suelo utilizar, es la del envío de reportes por mail cuando finalizan mis scripts. Lo interesante es que con un formateo sencillo permite el envío de mensajes con el cuerpo en html, dándoles un mejor aspecto en nuestro gestor de correo.

Se deben importar dos módulos para poder realizar el envío de mails: smtplib y email.mime.text. El primero se encargará de la gestión de la conexión con el servidor de correo, mientras que el segundo servirá para dar la codificación correcta e incluirlo como texto MIME en el cuerpo del mensaje. 
Lo que yo creo es una función a la que le paso el cuerpo del mensaje y se encarga de empaquetarlo y enviarlo. A continuación muestro el ejemplo:
 def sendmail(body):  
smtpserver = 'smtp.dominio.com'
sender='sender@dominio.com'
sysadmin1='receiver1@dominio.com'
sysadmin2='receiver2@dominio.com'
receiver = [ sysadmin1 , sysadmin2 ]
header='''


Envio de mail formateado en HTML


h2 {font-size:14px;margin: 2px;}
h3 {font-size:12px;margin: 2px;}
p {font-size:10px; margin: 2px;}
td {border: 1px outset}


'''
footer=''
msgbdy = open(body, 'rb')
msg = MIMEText(header+msgbdy.read()+footer, 'html')
msgbdy.close()
msg['Subject'] = 'Asunto del mensaje'
msg['From'] = sender
msg['To'] = sysadmin1
msg['CC'] = sysadmin2
correo = smtplib.SMTP(smtpserver)
correo.sendmail(sender, receiver, msg.as_string())
correo.quit()
El código creo que no es muy complicado de entender, pero básicamente crearemos tres variables que concatenaremos con la cabecera, el cuerpo y el cierre del código html. Esto se lo pasaremos a la función MIMEText con un segundo parámetro, ‘html’ que especifica el Content-Type y lo pondremos en la variable msg como cuerpo de mensaje. A continuación se realiza la conexión con el servidor y se envía el mail.

A la funcion le paso como parámetro el nombre del fichero de log, que posteriormente se codificará como un objeto MIME.

En el fichero de log, en lugar de introducirle “retornos de carro”, introduzco etiquetas del tipo

,

,
e incluso estilos para modificar el formato de la salida.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s