Согласно documentation, если DEBUG
установлен в False
и что-то обеспечивается при установке ADMINS
, Django будет отправить по электронной почте, когда код поднимает код 500 состояния. У меня есть настройки электронной почты, заполненные должным образом (поскольку я могу использовать send_mail в порядке), но всякий раз, когда я намеренно выставляю ошибочный код, я получаю свой шаблон 500.html, но не отправляется сообщение об ошибке. Что может заставить Django не делать этого?Django не отправлять электронные письма админам
ответ
Убедитесь, что EMAIL_HOST и EMAIL_PORT настроены прямо в settings.py (они относятся к вашему SMTP-серверу). Возможно, предполагается, что у вас есть SMTP-сервер, работающий на localhost.
Чтобы проверить это локально, запустите Python встроенный тест SMTP-сервер:
python -m smtpd -n -c DebuggingServer localhost:1025
Затем установить эти значения в вашем settings.py
EMAIL_HOST='localhost'
EMAIL_PORT=1025
Trigger 500 ошибка, и вы должны увидеть электронная почта появляется в окне терминала python smtpd.
Попробуйте
# ./manage shell
>>> from django.core.mail import send_mail
>>> send_mail('Subject here', 'Here is the message.', '[email protected]',['[email protected]'], fail_silently=False)
С [email protected], что вы на самом деле получить электронную почту в.
Как я уже сказал, я уже пробовал это и он отлично работает. – 2009-09-12 05:41:25
Мой веб-хостинг-провайдер - Webfaction - позволяет отправлять письма только из электронной почты, которая была явно создана на панели администратора. Создание исправлено.
Я использую webfaction и отправляю электронные письма из googlemail, поэтому я не думаю, что это действительно проблема. –
То есть Django отправляет сообщения электронной почты из googlemail. –
, очевидно, позволяет отправлять сообщения электронной почты, если вы используете smtp-сервер google, но если вы используете smtp.webfaction.com в качестве хоста, он не позволит вам, если письмо не существует. Я ничего не изменил, и он исправил это, поэтому я уверен, что это так. – 2009-09-12 07:49:32
Хотя, вероятно, не идеальный, я нашел использование Gmail, поскольку хост SMTP работает нормально. Существует полезный справочник по адресу nathanostgard.com.
Не стесняйтесь публиковать соответствующие разделы settings.py (включая EMAIL_ *, SERVER_EMAIL, ADMINS (просто вытащите свою реальную электронную почту), MANAGERS и DEBUG), если вы хотите, чтобы дополнительный набор глаз проверялся на опечатки!
Убедитесь, что DEBUG = False
В моем случае причина не хватает SERVER_EMAIL настройки.
По умолчанию для SERVER_EMAIL
является [email protected]
. Но многие почтовые серверы, включая , мой провайдер электронной почты не принимают электронные письма с таких подозрительных адресов. Они молча отбрасывают письма.
Изменение адреса отправителя до [email protected]
решило проблему. В settings.py
:
SERVER_EMAIL = '[email protected]'
Еще одна подсказка, что, скорее всего, проблема заключается в том, что вы проверяете свой почтовый журнал и видите запись, содержащую уведомление о недоставке отправителя. – jathanism
Хотя это было некоторое время, вот мой ответ, так что другие люди могут принести пользу в будущем.
В моем случае, что предотвращало отправку сообщений электронной почты в список ADMINS при возникновении ошибки, являлось параметром приложения. Я использовал django-piston, который предоставляет атрибуты настройки PISTON_EMAIL_ERRORS и PISTON_DISPLAY_ERRORS. Таким образом, установив их, сервер приложений мог уведомлять меня по почте, когда поршень выйдет из строя.
У меня была такая же ситуация. Я создал новый проект и приложение, и это сработало, поэтому я знал, что это мой код. Я отследил его до словаря LOGGING в settings.py.Несколько недель назад я сделал несколько изменений для регистрации с Sentry, но по какой-то причине ошибка началась только сегодня. Я изменил назад к оригиналу и получил это работает:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
Затем я сделал некоторые изменения медленно и получили его работы с Sentry и отправки по электронной почте админы, а также.
Кроме того, конфигурация LOGGING
по умолчанию объединяется с DEFAULT_LOGGING
, поэтому полезно взглянуть на the source code of django.utils.log.DEFAULT_LOGGING
, чтобы понять, что еще может повлиять на вашу конкретную ситуацию.
Под Django 1.4 это исправлено для нас. – boatcoder
Это исправлено для меня (Django 1.7). Спасибо – Paco
Добавление параметров ведения журнала убило мои электронные письма администратора, которые работали отлично до того, как выполнили регистрацию по умолчанию. Я предположил 'disable_existing_loggers ': False' сохранил бы существующую регистрацию как есть, но это не так. Это фиксировало это. – guidos
Если по какой-либо причине вы установили DEBUG_PROPAGATE_EXCEPTIONS в значение True (по умолчанию это False), адрес электронной почты для администратора не будет работать.
Еще одна возможность для ошибки - проблема с настройкой ADMINS. Следующая настройка приведет к потере почты администраторам, чтобы выполнить сбой тихо:
ADMINS = (
('your name', '[email protected]')
)
Что не так? Хорошо ADMINS должен быть кортежем кортежей, поэтому указанная выше потребность, чтобы быть отформатирована как
ADMINS = (
('your name', '[email protected]'),
)
Примечания тянущейся запятой. Без пропущенной запятой адрес «to» в письме будет неправильно отформатирован (а затем, вероятно, будет отключен вашим SMTP-сервером).
(Это было связано с ответом @cathal над запуском отладочного SMTP-сервера локально, что позволило мне найти это как мою проблему). – wxgeorge
Извините, если это слишком наивно, но в моем случае электронные письма были отправлены, но отправлялись непосредственно в папку SPAM. Прежде чем пытаться более сложные вещи, сначала проверьте папку SPAM.
Фактически .. да. У меня были ошибки от искателей, пытающихся сделать запрос AJAX без данных формы. Я переоценил интеллект спам-фильтров и в итоге получил все электронные письма, отправленные Django, попавшими в фильтр спама. –
Для чего это стоит, у меня была эта проблема, и ни одно из этих предложений не сработало для меня. Оказывается, моя проблема заключалась в том, что SERVER_EMAIL
был установлен на адрес, который сервер (Webfaction) не распознал. Если на этом сайте были размещены на Webfaction (как и на моих других сайтах), это не будет проблемой, но поскольку это было на другом сервере, серверы Webfaction не только проверяют подлинность отправляемого письма, но также значение From:
.
Другое дело, следует отметить, что параметры handler500
может обойти механизм, который посылает ошибки на 500, если ответ с точки зрения не имеет код статуса 500. Если у вас есть handler500
множество, то в том, что view ответьте на что-то вроде этого.
t = loader.get_template('500.html')
response = HttpResponseServerError(
t.render(RequestContext(request, {'custom_context_var':
'IT BROKE OMG FIRE EVERYONE'})))
response.status_code = 500
return response
В моем случае, это в mail_admins
include_html
.
Когда я установил include_html
на номер True
, сервер электронной почты отклонил отправку электронной почты, поскольку считает, что мои письма являются спамом.
Все работает нормально, когда я установил include_html
в False
.
... и затем есть ошибка Facepalm, когда вы использовали это в развитии, чтобы предотвратить электронные письма от выхода, а затем случайно скопировать установку на производство:
# Print emails to console
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
(вы, конечно, дон не видеть, что они печатаются на консоль при использовании сервера wsgi). Удаление установки из производства исправило это для меня.
И еще одна вещь, которая может пойти не так (я просто добавить его в список, для тех людей, которые в конечном итоге здесь, несмотря на все большие ответы выше):
Наша установка Джанго используется SendGrid как SMTP host и имел один адрес электронной почты администратора, определенный в настройках django. Это работало нормально в течение некоторого времени, но в какой-то момент почта перестала прибывать.
Как оказалось, почтовый адрес оказался в списке «Отскок» от SendGrid по какой-то неизвестной причине, в результате чего электронные письма на этот адрес будут тихо опущены навсегда. Исправлена ошибка с удалением адреса из этого списка и его белым списком.
- 1. Как отправлять запланированные электронные письма?
- 2. Nagios Herald не будет отправлять электронные письма
- 3. drupal webform не может отправлять электронные письма
- 4. Быстрая почта не будет отправлять электронные письма
- 5. Jenkins больше не будет отправлять электронные письма
- 6. не удалось отправить электронные письма django-helpdesk
- 7. Как отправлять электронные письма через SMTP?
- 8. postfix: Как отправлять электронные письма пользователям
- 9. Безопасно ли отправлять 8-битные электронные письма?
- 10. Как отправлять электронные письма, такие как craiglist?
- 11. Как отправлять электронные письма в сеансах Vars
- 12. Программно отправлять электронные письма pass vars клиента
- 13. Как отправлять электронные письма с подпиской внутри?
- 14. Как отправлять автоматические электронные письма в php
- 15. асинхронно отправлять электронные письма через SMTP-серверы - многопотоковые письма
- 16. Как отправлять электронные письма и отправлять их по PHPMailer?
- 17. swiftmailer не отправляет электронные письма
- 18. Delayed :: Jobs продолжает отправлять электронные письма, если это не удается
- 19. PHP отправлять электронные письма MIME ... больше не работает
- 20. Может отправлять две электронные письма отдельно, но не вместе
- 21. OpenCart - не отправлять электронные письма образуют контактную страницу по умолчанию
- 22. Postfix, MediaWiki, LAMP, сервер не будет отправлять электронные письма
- 23. Rspec не отправлять электронные письма с просьбой после Json
- 24. Мой скрипт не может отправлять электронные письма (снова)
- 25. Утилита не отправлять электронные письма после обновления до Rails 5
- 26. SSIS получать электронные письма из базы данных и отправлять отдельные электронные письма
- 27. Mercurial не отправляет электронные письма
- 28. Django получает электронные письма и их приложения
- 29. Python/Django | Как хранить отправленные электронные письма?
- 30. Сценарий не прекращает отправлять письма
Я вижу сообщение, но если я верну его обратно к своим настройкам электронной почты, он не работает. – 2009-09-12 05:43:59
также добавил это, хорошо работает, но все же ничего не меняется, когда возвращается к нормальным настройкам. – Harry