【问题标题】:How to handle errors with imaplib in Python如何在 Python 中使用 imaplib 处理错误
【发布时间】:2013-09-16 05:53:22
【问题描述】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果要捕获某个异常,Python中try...except子句中的异常名称应该写在except关键字之后:

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

      请注意,我将异常名称更改为 imaplib.IMAP4.error。这并不明显,但您可以通过查看imaplib 的源代码找到异常的正确名称。

      【讨论】:

      • ... 或者通过在没有try/except 的情况下触发错误并在回溯中检查错误。
      • @tripleee:它在回溯中显示imaplib.error。当试图捕捉imaplib.error 时,会抛出AttributeError,告诉imaplib 没有error 属性。因此,从追溯来看,完全不清楚要捕获哪个异常。
      猜你喜欢
      • 2011-06-04
      • 2012-12-11
      • 1970-01-01
      • 2011-01-02
      • 2019-03-13
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多