Acá les muestro un simple notificador de correo con Python.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import sys, libgmail def main(): if len(sys.argv) >= 3: g = libgmail.GmailAccount(sys.argv[1], sys.argv[2]) try: g.login() except libgmail.GmailLoginFailure: print 'Login incorrecto' else: unread = g.getUnreadMsgCount() if unread: import pynotify, gtk pynotify.init('Gmail notify') pynotify.Notification('Gmail', '%d mensajes sin leer' % unread, gtk.STOCK_DIALOG_INFO).show() if __name__ == '__main__': main() |
En la primera línea estoy importando el módulo libgmail porque uso Gmail. Si usan Ubuntu, pueden instalar esta librería con sudo apt-get install python-libgmail.
Alternativamente pueden obtener un XML en formato Atom a través de https://mail.google.com/mail/feed/atom (van a necesitar algo como urllib2.HTTPPasswordMgrWithDefaultRealm).
Como es un script que se ejecuta desde la línea de comandos, sys.argv[1] será mi nombre de usuario y sys.argv[2] mi contraseña.
Si en mi cuenta hay correo no leído (línea 12), importo pynotify y gtk (porque uso Gnome) para mostrar un mensaje en mi pantalla:

Dos cosas a tener en cuenta:
- En el ejemplo utilizo sys.argv para obtener el nombre de usuario y la contraseña, pero tengan en cuenta que esa información queda almacenada en ~/.bash_history o en otros logs del sistema. Es preferible definir dos variables dentro del script
- Pueden hacer que el script corra periódicamente utilizando cron. Por ejemplo: */1 * * * * /usr/bin/python2.5 /path/al/script.py usuario@gmail.com contraseña
mmm no me funciona o no se como hacerlo funcionar
sys.argv[usuario], sys.argv[****]
asi es?
Copiá el código en un archivo nuevo (mail.py, por ejemplo) y, desde una terminal de comandos, escribí: python mail.py usuario contraseña (reemplazá por lo que corresponda).
Saludos
funciona..!
no quiero ser molesto, pero ahora me dice 5000msj nuevos…sera que piensa que todos los mails son nuevos?
a) Si dice “mensajes nuevos”, algo está mal, porque debería ser “mensajes sin leer”
b) el método getUnreadMsgCount() lo que hace es devolverte la cantidad de mensajes no leídos (que no necesariamente tienen que ser nuevos, pueden ser de hace mucho tiempo)