Python: Enviar email con los resultados

gmailpythonsimple

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.

·

pythonemail

·

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)
2 comentarios
  1. Miguel dijo:

    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.

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

A %d blogueros les gusta esto: