如何在Python中使用imaplib处理错误

如何在Python中使用imaplib处理错误,python,email,error-handling,imap,Python,Email,Error Handling,Imap,我想为用户在我的脚本中输入错误的密码编写错误处理。在except语句之后,我一直在更改代码,但我找不到正确的错误代码。我错过什么了吗 import imaplib import email mail = imaplib.IMAP4_SSL('imap.gmail.com') username = raw_input('USERNAME (email):') password = raw_input('PASSWORD: ') try: mail.login(user

我想为用户在我的脚本中输入错误的密码编写错误处理。在except语句之后,我一直在更改代码,但我找不到正确的错误代码。我错过什么了吗

import imaplib
import email

mail = imaplib.IMAP4_SSL('imap.gmail.com')

username = raw_input('USERNAME (email):')
password = raw_input('PASSWORD: ')

    try:
        mail.login(username, password)
        print "Logged in as %r !" % username
    except: 
        imaplib.error
        print "Log in failed."

mail.list()
# Out: list of "folders" aka labels in gmail.
mail.select("inbox") # connect to inbox.

fromWho = raw_input('FROM:')

result, data = mail.uid('search', None, '(FROM fromWho)')
latest_email_uid = data[0].split()[-1]
result, data = mail.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = data[0][1]

print raw_email

如果要捕获某个异常,Python中的exception name in子句应该写在
except
关键字之后:

try:
    mail.login(username, password)
    print "Logged in as %r !" % username
except imaplib.IMAP4.error:
    print "Log in failed."

注意,我将异常名称更改为
imaplib.IMAP4.error
。这并不明显,但是您可以通过查看
imaplib

的源代码来找到异常的正确名称。我不确定这是否被视为良好做法,但是
mail
对象是从
imaplib.IMAP4
生成的,可以使用。 使用上面的示例代码: ... 除mail.error外:

。。。或者在没有
的情况下触发错误,尝试
/
除外
并在回溯中检查错误。@tripleee:在回溯中显示
imaplib.error
。当试图捕获
imaplib.error
时,会抛出
AttributeError
,告知
imaplib
没有
error
属性。因此,从追溯来看,完全不清楚要捕获哪个异常。