Это должно выдать ошибку, точнее urllib2.HTTPError, с полем кода, установленным в 401, вы можете увидеть некоторый адаптированный код ниже.Я оставил вашу общую структуру try / кроме, но на самом деле, не используйте общие, кроме операторов, поймайте только то, что вы ожидаете, что может произойти!
def get_unread_msgs(user, passwd):
auth = URL.HTTPBasicAuthHandler()
auth.add_password(
realm='New mail feed',
uri='https://mail.google.com',
user='%s'%user,
passwd=passwd
)
opener = URL.build_opener(auth)
URL.install_opener(opener)
try:
feed= URL.urlopen('https://mail.google.com/mail/feed/atom')
return feed.read()
except HTTPError, e:
if e.code == 401:
print "authorization failed"
else:
raise e # or do something else
except: #A general except clause is discouraged, I let it in because you had it already
return None
Я только что протестировал здесь, отлично работает