Mat*_*hew 2 python email django python-2.7
我正在尝试修复我在 django 应用程序中看到的不发送邮件的错误。请注意,该应用程序运行良好,只是邮件功能出现故障。我试图收集错误日志,但我无法提出与发送邮件相关的任何错误。所以,我做了一个例子来尝试强制错误。这是示例:
from django.core.mail import send_mail
send_mail('hi', 'hi', 'test@test.com', ['myname@yeah.com'], fail_silently=False)
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,出现以下错误:
Traceback (most recent call last):
File "dmail.py", line 14, in <module>
send_mail('hi', 'hi', 'test@test.com', ['myname@yeah.com'], fail_silently=False)
File "/data/servers/calendar_1/lib/python2.7/site-packages/django/core/mail/__init__.py", line 59, in send_mail
fail_silently=fail_silently)
File "/data/servers/calendar_1/lib/python2.7/site-packages/django/core/mail/__init__.py", line 29, in get_connection
path = backend or settings.EMAIL_BACKEND
File "/data/servers/calendar_1/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner
self._setup()
File "/data/servers/calendar_1/lib/python2.7/site-packages/django/conf/__init__.py", line 39, in _setup
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
Run Code Online (Sandbox Code Playgroud)
我设法通过将代码更改为以下内容来修复我的测试示例:
from django.core.mail import send_mail
from django.conf import settings
settings.configure(TEMPLATE_DIRS=('/path_to_project',), DEBUG=False, TEMPLATE_DEBUG=False)
send_mail('hi', 'hi', 'test@test.com', ['myname@yeah.com'], fail_silently=False)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将这些设置添加到 send_mail.py 时,我仍然没有从我的实际应用程序中收到任何邮件。有人可以向我解释清楚,我如何设置 DJANGO_SETTINGS_MODULE 以便我的示例和我的应用程序都可以看到它?如果失败,有人可以告诉我如何在 django 中设置有意义的日志记录,以便我在日志中实际看到与邮件相关的错误吗?任何提示或指导将不胜感激。
不要从应用程序外部设置它。DJANGO_SETTINGS_MODULE
在您的wsgi
文件中为变量创建一个条目。每次启动服务器时,都会自动设置此变量。
例如:
import os
os.environ['DJANGO_SETTINGS_MODULE'] = '<project_name>.settings'
Run Code Online (Sandbox Code Playgroud)