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

http://docs.python.org/2/library/smtplib.html#smtplib.SMTPExceptionに基づいて、より多くの例外を見つけることができ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 に答える