2009-11-21 18 views
10

Gmail bir atom yayını almak için şu güzel şeyi yapıyor:Nasıl gmail atomuna Python ile giriş yapmalı?

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

Artık bunu bir tarayıcıda yaptığınızda, sizi doğrular ve yönlendirir. Ama Python'da, en azından denediğim şey doğru çalışmıyor.

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

Doğru bir şekilde iletmek yerine, şunu yapıyor:

>>> 
https://user:[email protected]/gmail/feed/atom 
Enter username for New mail feed at mail.google.com: 

Bu BAD! Kullanıcı adı ve şifreyi tekrar yazmam gerekmem! Web tarayıcımda olduğu gibi python'da otomatik olarak ileriye nasıl gidebilirim, böylece tüm BS olmadan feed içeriğini alabilirim?

cevap

13

denedim takibi ve işe yaradı:

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='%[email protected]' % 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() 
+2

alıyorum 'temel kimlik doğrulama başarısız urllib2.HTTPError: HTTP Hatası 401' kullanıcı adı ve şifre doğru. Bu problemi olan başka biri var mı? –

+0

Nevermind. Kodu sunucumdan çalıştırmaya çalıştığımda sadece bir sorun var. Yerel makinemde çalışırken iyi çalışıyor. –