use*_*634 5 python email django
我无法登录我的Django Web应用程序.
我的设置文件如下所示:
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 465
EMAIL_HOST_USER = "paulhtremblay@gmail.com"
EMAIL_HOST_PASSWORD = "password"
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = "paulhtremblay@gmail.com"
SERVER_EMAIL = 'smtp.gmail.com'
ADMINS = (
('Paul Tremblay', 'paulhtremblay@gmail.com'),
)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'ERROR',
'class': 'logging.FileHandler',
'filename': '/var/log/django_logs/debug.log'
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'ERROR',
'propagate': True,
},
'django.request': {
'handlers': ['file'],
'level': 'ERROR',
'propagate': True,
},
},
}
Run Code Online (Sandbox Code Playgroud)
我在我的视图文件中有这个:
def five_hundred_test(request):
raise ValueError("raising this on purpose for testing for 500")
return render(request, 'my_test/basic_css.html')
Run Code Online (Sandbox Code Playgroud)
当我将浏览器指向此功能时,我得到500错误(如预期的那样),但没有任何内容被发送到我的电子邮件,并且没有任何内容被放入日志文件中.我使用Django 1.9,使用python3,使用Apache运行服务器.
这是我的工作设置。我没有添加console logger,因为我仅将它用于生产。灵感来自Django 文档的相关Logging Examples 。
这是我的电子邮件和日志记录设置,这里是电子邮件后端相关 django 文档的链接:
from os.path import join
# Email Configuration ==========================================================
ADMINS = [('Me', 'my@email'), ]
MANAGERS = ADMINS
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = 'My Name To Display <my@email>'
SERVER_EMAIL = 'error_from@email'
EMAIL_HOST = 'smtp.server' # An IP may work better
EMAIL_HOST_USER = 'username_for_login'
EMAIL_HOST_PASSWORD = 'password_for_login'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
# Logging Configuration ========================================================
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'file': {
'level': 'ERROR',
'class': 'logging.FileHandler',
'filename': join(HOME_DIR, 'my_logs', 'debug.log'),
'formatter': 'verbose'
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'formatter': 'simple'
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'ERROR',
'propagate': True,
},
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
},
}
Run Code Online (Sandbox Code Playgroud)
我发现您的环境变量有两个错误:
SERVER_EMAIL设置必须是电子邮件地址。TLS,因此正确的端口应该是 587。此外,您正在尝试使用 Google 作为 SMTP 服务器,但根据此更新的答案, Google 不再提供此服务,您必须搜索另一个 SMTP 服务器。
如果您需要使用,我还整理了一篇文章,其中包含一些调试技术。
这可以更简单地完成。如果要同时登录到电子邮件和 Apache 日志文件,则需要在 中执行以下操作settings.py:
配置电子邮件设置 -这确保 Django 可以发送电子邮件
SERVER_EMAIL = 'me@me.eu'
EMAIL_HOST = 'smtp.me.eu'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = SERVER_EMAIL
EMAIL_HOST_PASSWORD = 'password'
Run Code Online (Sandbox Code Playgroud)
设置DEBUG为False-这将启用错误电子邮件发送
DEBUG = False
Run Code Online (Sandbox Code Playgroud)
将错误电子邮件接收器添加到ADMINS(您可能也需要MANAGERS)-这指定谁接收错误电子邮件
ADMINS = (
('Me', 'me@me.eu'),
)
MANAGERS = ADMINS
Run Code Online (Sandbox Code Playgroud)
最后,删除禁用调试模式时不允许消息通过的默认控制台过滤器 -这会使错误最终出现在 Apache 错误日志中
from django.utils.log import DEFAULT_LOGGING
# Assure that errors end up to Apache error logs via console output
# when debug mode is disabled
DEFAULT_LOGGING['handlers']['console']['filters'] = []
Run Code Online (Sandbox Code Playgroud)
这必须在,settings.py因为DEFAULT_LOGGING在导入设置后将立即配置日志记录。
如果您想从您自己的代码中添加对日志记录的支持,请同时配置根记录器settings.py:
# Enable logging to console from our modules by configuring the root logger
DEFAULT_LOGGING['loggers'][''] = {
'handlers': ['console'],
'level': 'INFO',
'propagate': True
}
Run Code Online (Sandbox Code Playgroud)
最后,您可能希望打开详细日志记录:
SERVER_EMAIL = 'me@me.eu'
EMAIL_HOST = 'smtp.me.eu'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = SERVER_EMAIL
EMAIL_HOST_PASSWORD = 'password'
Run Code Online (Sandbox Code Playgroud)
然后,您可以按如下方式使用它:
log = logging.getLogger(__name__)
log.info('Logging works!')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |