サーバーエラーでメールを送信する

Djangoでサーバーエラーが発生した場合に、エラー内容が記載されたメールを送信する方法です。「Django | Error reporting | Django documentation」のServer errorsというやつです。ただ、ちょっと付け加えないと動かなかったので、メモしておきます。

メールの送信は、「settings.py」に以下の設定をしたときでした。

  • DEBUGをFalseにする
  • LOGGINGに「django.request」というロガーを定義し、メール送信ハンドラを指定する
  • ADMINSに受信アドレスを指定する
  • SERVER_EMAILに送信元アドレスを指定する(恐らく省略可)
  • EMAIL_HOST, EMAIL_PORTなど、メール関連の設定をする(※1)

この状態でviewで例外が発生し、500エラーに遷移する際にメールが送信されました。なお期待通りの動作だと思いますが、独自のMiddlewareの「process_exception」で例外をキャッチし、その他ページをレンダリングしたりして500エラーに遷移しない場合は送信されませんでした。

※1 メール関連の設定の例「Google AppsのSMTPを指定してメール送信する

この記事が役に立った場合、シェアしていただけると励みになります!!