Я пытаюсь исправить ошибку, которую я вижу в приложении django, где он не отправляет почту. Обратите внимание, что приложение отлично работает, это только функция почты, которая терпит неудачу. Я попытался собрать журналы ошибок, но я не могу придумать никаких ошибок, связанных с отправкой почты. Итак, я сделал пример, чтобы попытаться заставить ошибки. Вот пример:Как установить переменную env DJANGO_SETTINGS_MODULE?
from django.core.mail import send_mail
send_mail('hi', 'hi', '[email protected]', ['[email protected]'], fail_silently=False)
Когда я запускаю приведенный выше код, я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "dmail.py", line 14, in <module>
send_mail('hi', 'hi', '[email protected]', ['[email protected]'], 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.
мне удалось исправить мой тестовый пример, изменив код для этого:
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', '[email protected]', ['[email protected]'], fail_silently=False)
Однако, когда я пытаюсь добавить эти параметры в send_mail.py, я по-прежнему не получаю почту от моего фактического приложения. Может ли кто-нибудь объяснить мне, ясно, как я настраиваю DJANGO_SETTINGS_MODULE, чтобы как мой пример, так и мое приложение могли его увидеть? В противном случае, может кто-нибудь сказать мне, как настроить значащую запись в django, чтобы я действительно видел ошибки, связанные с почтой в журналах? Любые советы или рекомендации будут очень признательны.
Я на CentOS/Linux. Мое приложение называется oats, а файл настроек называется settings.py. Итак ... Я пытался: export DJANGO_SETTINGS_MODULE = "oats.settings" Но это не имело никакого эффекта. Приложение-тест не подбирает его. – Matthew
В вашем первом блоке кода вы запускаете его из интерпретатора Python или оболочки django? Если оболочка, то убедитесь, что у вас есть TEMPLATE_DIRS = ('/ path_to_project',), DEBUG = False, TEMPLATE_DEBUG = False в вашем файле настроек, затем вызовите оболочку с параметром --settings = oats.settings. Используйте тот же параметр --settings, когда вы запустите свой сервер. – perfect5th
Я использую интерпретатор, а не оболочку. Я пытался настроить протоколирование и протоколирование, но ничего не связано с почтой. Очень расстраивает. – Matthew