miércoles, 13 de abril de 2011

Reptiles acechantes

Una de las cosas más útiles que me he encontrado últimamente con python ha sido la posibilidad de enviar correos mediante un script. Esto nos puede valer para enriquecer nuestro sistema de backups automatizado, para enviar incidencias desde algún programa que hayamos implantado en alguna empresa y mil usos más que se nos irán ocurriendo.

Aquí dejo el código de un script muy simple para enviar un correo a cierta dirección de correo utilizando una cuenta de la empresa. Para los backups es perfecto ya que cuando detectemos algún problema en los scripts nos llegará un aviso que podremos procesar como máximo al día siguiente al revisar el correo.

Este script no lo invocamos directamente, utilizaremos un entorno virtual desde el cuál lanzarlo para mantener el código python independiente de las posibles actualizaciones del servidor. Pero como muestra creo que es bastante útil. Si observáis el código es bastante simple, añadimos un disclaimer al correo, componemos el resto del mensaje con los datos pasados en los argumentos y lo enviamos autenticándonos en el servidor de correo.


#!/usr/bin/python
# -*- coding: utf-8 -*-

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.Header import Header

# Probamos a enviar la incidencia por correo
disclaimer = u'''_________________________________________
CONFIDENCIALIDAD

[...]'''

soporte = 'soporte@nombre.es'
destino = 'destino@nombre.com'
msg = MIMEMultipart('alternative')
msg_dest = MIMEMultipart('alternative')
msg['Subject'] = Header(u'Título', 'UTF-8')
msg_dest['Subject'] = Header(u"Ticket Enviado :'", 'UTF-8')
msg['From'] = soporte
msg_dest['From'] = soporte
msg['To'] = soporte
msg_dest['To'] = destino
text = disclaimer
text_dest = u'Contenido original del mensaje:\n\n' + disclaimer
part = MIMEText(text.encode('UTF-8'), 'plain', 'UTF-8')
part_dest = MIMEText(text_dest.encode('UTF-8'), 'plain', 'UTF-8')
msg.attach(part)
msg_dest.attach(part_dest)
smtpserver = smtplib.SMTP('mail.nombre.es', 587)
try:
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo()
smtpserver.login(soporte, 'contraseña')
smtpserver.sendmail(soporte, soporte, msg.as_string())
smtpserver.sendmail(soporte, profesor, msg_prof.as_string())
smtpserver.quit()
except:
# Error en el envío
print u'Error en el envío'
else:
print u'Operación correcta'

No hay comentarios:

Publicar un comentario