Django在出现错误500时不会向管理员发送电子邮件 [英] Django does not send emails to admins on error 500

查看:19
本文介绍了Django在出现错误500时不会向管理员发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的Django项目中有以下设置

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = 'somemail@gmail.com'
SERVER_EMAIL = 'somemail@gmail.com'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'somemail@gmail.com'               #your acc and pass
EMAIL_HOST_PASSWORD = 'somepassword'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

ADMINS = (('myusername', 'myemail@gmail.com'),)
但Django仍然不会在500 error上向管理员发送电子邮件。这里出了什么问题?docs中说我应该输入全名ADMINS设置。该全名是否来自默认User型号?如果我把那些田地都清空了呢?更重要的是-没有验证字段应该是唯一的,并且可能存在与管理员同名的其他人?

P.S.send_mail()中的python shell使用这些设置。

更新我的Logging设置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'WARNING',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'debug.log'),
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'WARNING',
            'propagate': True,
        },
    },
}

推荐答案

在settings.py的日志记录设置中,将下面的块添加到处理程序

            'mail_admins': {
              'level': 'ERROR',
              'class': 'django.utils.log.AdminEmailHandler'
        },

更新:

仅当DEBUG为FALSE时发送电子邮件时,才将以下行添加到上面的阻止中。

              'filters': ['require_debug_false'],

和筛选器部分中的以下设置

        'filters': {
           'require_debug_false': {
              '()': 'django.utils.log.RequireDebugFalse',
           },
           'require_debug_true': {
              '()': 'django.utils.log.RequireDebugTrue',
           },
        },  

更新:

loggershandlers中添加mail_admin,如下

        'loggers': {
          'django': {
              'handlers': ['file', 'mail_admins'],
              'level': 'INFO',
              'propagate': True,
           },
         },

这篇关于Django在出现错误500时不会向管理员发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆