Wie kann man sich mit Python in Google Mail -Atom -Feed automatisieren?
Frage
Google Mail hat diese süße Sache, um ein Atom -Feed zu bekommen:
def gmail_url(user, pwd):
return "https://"+str(user)+":"+str(pwd)+"@gmail.google.com/gmail/feed/atom"
Wenn Sie dies in einem Browser tun, authentifiziert es und leitet Sie weiter. Aber in Python funktioniert zumindest das, was ich versuche, nicht richtig.
url = gmail_url(settings.USER, settings.PASS)
print url
opener = urllib.FancyURLopener()
f = opener.open(url)
print f.read()
Anstatt richtig weiterzuleiten, tut es dies:
>>>
https://user:pass@gmail.google.com/gmail/feed/atom
Enter username for New mail feed at mail.google.com:
Das ist schlecht! Ich sollte den Benutzernamen und das Passwort nicht wieder eingeben müssen !! Wie kann ich es in Python nur automatisch vorwärts machen, wie es in meinem Webbrowser der Fall ist, damit ich den Feed-Inhalt ohne alle BS erhalten kann?
Lösung
Sie können den httpbasicauthhandler verwenden, ich habe Folgendes ausprobiert und es hat funktioniert:
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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow