hikaru’s diary

Django Engineer

【Django】500エラーをメールで通知しよう!

views.py

from django.core.mail import send_mail #追加
def mail(request):
    form = mail_form()
    #i = 1 + 'a'  # 後で500エラーを出すために使う

    
    send_mail(
        'Subject here',
        'Here is the message.',
        '送信元@gmail.com',
        ['送信先@gmail.com'],
        fail_silently=False,
    )
    return render(request,'mail.html',form)

settings.py

#メールを通知する
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.googlemail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = 'mail@gmail.com'
EMAIL_HOST_PASSWORD = 'password'



複数人にccで送ることができるそうです。
まずはdjangoでメールが扱えるかどうかを確認しましょう。


settings.py

SERIALIZATION_MODULES = True
ADMINS = (('name', 'mail1@gmail.com'), ('name', 'mail2@gmail.com'))
DEBUG = False


上記を書いてviews.pyの1+'a'で意図的に500エラーを出しましょう。





無事メールが受信されました。


もし受信されなかったら
viewsのsend_mail()にsubject、message、from_email、recipient_listの最低4つが設定されている。
settingsにMIDDLEWARE_CLASSES 設定に CommonMiddleware を入れてみてください。
https://django-docs-ja.readthedocs.io/en/1.0-maint/ref/settings.html#serialization-modules




参考:
メールを送信する | Django ドキュメント | Django
エラーのレポート | Django ドキュメント | Django
https://django-docs-ja.readthedocs.io/en/1.0-maint/howto/error-reporting.html