Merodeando por Internet encontré una página con contenido muy interesante «Pythin, GIS and Stuff», en ella vi un código que ya había pensado en buscar y es la opción de poder enviar un email con los resultados a nuestra cuenta desde el propio script. Y esto se hace de una forma muy sencilla. He simplificado un poco el de su web para que podáis pegar y copiar directamente sea cual sea la plataforma que vais a usar (en su web ejemplo de uso con ArcGIS).
Al ser una librería de Python, este código funciona desde cualquier sitio donde lo ejecutes, puedes agregarlo a scripts de OGR/GDAL desde editores externos,o a tus scripts en gvSIG, PyQGIS o ArcPy. En todos funciona perfectamente por lo que he podido probar.
Lo único que necesitamos introducir es la información una cuenta Gmail, la contraseña, y la cuenta destinatario. (Cuidado si le mandáis a alguien el script con eliminar la contraseña).
La función aceptará dos variables, el mensaje (una variable tipo string) y una variable booleana (True/False) por si queremos modificar el contenido de alguna forma, en este caso solo indica un supuesto de si se han procesado bien o mal los cálculos, cambiando el encabezado del email.
·
·
Además se ha añadido que la variable se cargue con los datos de un txt que hallamos podido crear. Esto se puede eliminar, solamente dejando que se asigne el valor de una variable string normal, asignar directamente a strResult un valor.
Copiando y pegando este bloque de código solamente deberéis de usarlo llamandolo de la forma:
sendResultEmail(strResult, success)
·
import smtplib def sendResultEmail(msgContents, success_TF): '''sendResultEmail(msgContents, success_TF)''' #Info to = 'email@gmail.com' send_username = 'email@gmail.com' send_password = '*****' smtpserver = smtplib.SMTP("smtp.gmail.com",587) if success_TF: subject = 'Resultados de la prueba de email: script SUCCESS.' else: subject = 'Resultados de la prueba de email: script FAILURE.' smtpserver.ehlo() smtpserver.starttls() smtpserver.ehlo smtpserver.login(send_username, send_password) header = 'To:' + to + '\n' + 'From: ' + send_username + '\n' + 'Subject:' + subject + '\n' msg = header + '\nArcpy results: \n' + msgContents + '\n' smtpserver.sendmail(send_username, to, msg) smtpserver.close() outTxt = "c:/gvsig/uni/dataInfo.txt" txtFile = open(outTxt, "r") strResult = txtFile.read() txtFile.close() success = True sendResultEmail(strResult, success)
Qué buena aportación.
Justo en navidades estuve pensando cómo hacer esto, para hacer un sorteo del típico amigo invisible y mandarle a cada uno por correo quién le había tocado. Al final no me dio tiempo, pero me quedé con la duda de cómo enviar un correo desde el código.
Muchas gracias.
Un saludo.
A ti por comentar. Exacto, como tu dices muchas veces solo necesitamos algo sencillo que funcione.
Un saludo.
resource
Ruth J. Hancock – Hamim Bata, Patricia E