¿Cómo iniciar sesión automáticamente en el canal de gmail con Python?

Gmail tiene esta cosa dulce para obtener un canal de información atómica:

def gmail_url(user, pwd): return "https://"+str(user)+":"+str(pwd)+"@gmail.google.com/gmail/feed/atom" 

Ahora, cuando haces esto en un navegador, te autentica y te reenvía. Pero en Python, al menos lo que estoy intentando, no funciona bien.

 url = gmail_url(settings.USER, settings.PASS) print url opener = urllib.FancyURLopener() f = opener.open(url) print f.read() 

En lugar de reenviar correctamente, está haciendo esto:

 >>> https://user:pass@gmail.google.com/gmail/feed/atom Enter username for New mail feed at mail.google.com: 

¡Esto es malo! ¡No debería tener que escribir el nombre de usuario y la contraseña otra vez! ¿Cómo puedo hacer que solo se reenvíe automáticamente en Python como lo hace en mi navegador web, para que pueda obtener el contenido del feed sin todas las BS?

Puedes usar HTTPBasicAuthHandler, probé lo siguiente y funcionó:

 import urllib2 def get_unread_msgs(user, passwd): auth_handler = urllib2.HTTPBasicAuthHandler() auth_handler.add_password( realm='New mail feed', uri='https://mail.google.com', user='%s@gmail.com' % user, passwd=passwd ) opener = urllib2.build_opener(auth_handler) urllib2.install_opener(opener) feed = urllib2.urlopen('https://mail.google.com/mail/feed/atom') return feed.read()