Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django不发送错误电子邮件-如何调试?_Python_Django - Fatal编程技术网

Python Django不发送错误电子邮件-如何调试?

Python Django不发送错误电子邮件-如何调试?,python,django,Python,Django,我正在使用Django 1.8。这是我的基本设置文件: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': { 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse' } }, 'handlers': { 'mail

我正在使用Django 1.8。这是我的基本设置文件:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}
ADMINS = (
   ('ME', 'me@gmail.com'),
)
MANAGERS = ADMINS
以下是我的生产设置:

########## EMAIL CONFIGURATION
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'my.error.account@gmail.com'
EMAIL_HOST_PASSWORD = utils.get_env_setting('GMAIL_PASS')
EMAIL_SUBJECT_PREFIX = '[%s] ' % SITE_NAME
SERVER_EMAIL = EMAIL_HOST_USER
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
########## END EMAIL CONFIGURATION
它曾在生产中发送错误电子邮件,但已停止。我已经设置了一个返回500个错误的页面,这样我就可以进一步测试它——加载时不会发送电子邮件

我试过调试一些显而易见的东西:

  • 我仍然可以登录到
    my.error。account@gmail.com
    而且它似乎没有被阻止
  • 我已经检查了我的垃圾邮件过滤器
  • 我确信
    DEBUG
    设置为false
  • 我相信Django用户可以使用
    GMAIL\u PASS
    环境变量
如何进一步调试它?

  • 关于问题的调试部分

    @zopieux评论道:


    首先,检查邮件是否正在发送。设置:

    EMAIL_HOST = 'localhost'
    EMAIL_PORT = 1025
    EMAIL_USE_TLS = False
    EMAIL_USE_SSL = False
    
    然后运行虚拟SMTP服务器:

    python-msmtpd-n-c调试服务器本地主机:1025

    如果这样做有效,您可以恢复更改并手动发送电子邮件,如下所述:

  • 有关使用Google作为SMTP服务器的功能:

    -并更新-问题的答案表示Google不再支持此功能(2016年),您应该尝试寻找另一个SMTP服务器


我已将我的作品发布以供参考。

首先,检查邮件是否已发送。将
主机设置为
localhost
,将
端口设置为
1025
,禁用
TLS
,并使用以下命令运行虚拟SMTP服务器:
python-msmtpd-n-c调试服务器localhost:1025
,以防对任何人有所帮助,我花了一段时间才弄明白,您不仅必须在
处理程序
键下指定
邮件管理员
,而且还必须在
记录器
键下启用该处理程序
from django.core.mail import EmailMessage
email = EmailMessage('Hello', 'World', to=['user@gmail.com'])
email.send()