2

我有带有邮件代码部分的 Flask 应用程序,例如

   if app.config['MAIL']:
      mail.send(message)
    else:
      print message.html

有时由于邮件服务器问题,mail.send() 函数会失败。您如何检查错误状态并记录相同的内容?

怎么做

      if app.config['MAIL']:
        retcode=mail.send(message)
      else:
        print message.html
      # now log it
      if (retcode != 0):
         #log it or take anyother action.
4

1 回答 1

5

尝试捕获异常:

if app.config['MAIL']:
    try:
        mail.send(message)
    except SMTPException, e:
        current_app.logger.error(e.message)
else:
    print message.html

您可以根据以下内容找到更多例外SMTPException:http: //docs.python.org/2/library/smtplib.html#smtplib.SMTPException

如果你真的需要返回码,你可以这样做:

retcode = 0
if app.config['MAIL']:
    try:
        mail.send(message)
    except SMTPAuthenticationError, e:
        retcode = 2
    except SMTPServerDisconnected, e:
        retcode = 3
    except SMTPException, e:
        retcode = 1
else:
    print message.html

if retcode:
    current_app.logger.error(retcode)
于 2013-04-20T12:20:28.507 回答