sábado, 7 de junio de 2008

Leyendo correo POP3 desde python

Acceder a una dirección de correo electrónico desde python es muy sencillo si se tiene habilitado POP3.

Para ello se puede usar la librería poplib. Para los ejemplos usaré gmail, si queréis probarlo acordaros de habilitar POP3 en la web de gmail.

#!/usr/bin/python

import poplib;

p=poplib.POP3_SSL("pop.gmail.com");
p.user("usuario@gmail.com");
p.pass_("pass");

mensajes=p.list()[1];

lastmsg=mensajes[-1].split()[0];

print p.retr(lastmsg);

p.quit();

Primero creamos un objeto POP3_SSL, (gmail funciona con SSL), metemos usuario y contraseña.
A partir de entonces ya podemos administrar el correo con las funciones que nos provee la librería poplib.

En el ejemplo se obtiene la lista de mensajes con list(), se elige de la respuesta el último mensaje y se le pide al servidor mediante retr(msgid). Es necesario parsear la salida puesto que lo que tenemos hasta el momento es la respuesta en bruto del servidor, pero si leéis en pantalla ya podeis distinguir de que mensaje se trata.

Usando esto podemos crear muy fácilmente un programa que revise nuestro buzón de correo y nos avise cuando nos llega un nuevo mensaje.

#!/usr/bin/python

import poplib;
import time;

oldmensajes=0;
nmensajes=0;
first=1;

while(1):
p=poplib.POP3_SSL("pop.gmail.com");
p.user("usuario@gmail.com");
p.pass_("pass");

nmensajes=p.stat()[0];
print nmensajes;

p.quit();

if(first==1):
oldmensajes=nmensajes;
first=0;


if(nmensajes!=oldmensajes):
print "Se ha recibido " + str(nmensajes-oldmensajes) + " mensaje(s) nuevos";
nmensajes=oldmensajes;

time.sleep(300);

El script no está probado, solo es un ejemplo de como se podría crear algo útil con esta librería.

0 comentarios: