6

我想为用户在我的脚本中输入错误密码编写错误处理。我在 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
4

2 回答 2

14

如果要捕获某个异常,try...exceptPython 中的异常名称 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.

于 2013-09-12T03:28:28.207 回答
1

我不确定这是否被认为是好的做法,但该mail对象是从中生成的imaplib.IMAP4并且可以使用。使用上面的示例代码: ... 除了 mail.error: ...

于 2015-11-02T21:50:24.510 回答