Według documentation, jeśli DEBUG
jest ustawiony na False
i coś jest uruchomiona ADMINS
Django wyśle e-maila, gdy kod podnosi kod 500 stanu. Mam poprawnie skonfigurowane ustawienia wiadomości e-mail (ponieważ mogę używać send_mail dobrze), ale gdy celowo umieszczam błędny kod, otrzymuję szablon 500.html, ale nie wysyłam e-maila z błędem. Co może spowodować, że Django tego nie zrobi?Django nie wysyłanie e-maili do administratorów
Odpowiedz
Upewnij się, że twoje EMAIL_HOST i EMAIL_PORT są ustawione poprawnie w settings.py (te odnoszą się do twojego serwera SMTP). Może to zakładać, że masz serwer SMTP działający na localhost.
Aby to sprawdzić lokalnie uruchomić Pythona wbudowany serwer testowy SMTP:
python -m smtpd -n -c DebuggingServer localhost:1025
następnie ustawić te wartości w settings.py
EMAIL_HOST='localhost'
EMAIL_PORT=1025
wyzwalającego 500 błędu, i powinieneś zobaczyć wiadomość e-mail pojawi się w oknie terminala smtpd Pythona.
Spróbuj
# ./manage shell
>>> from django.core.mail import send_mail
>>> send_mail('Subject here', 'Here is the message.', '[email protected]',['[email protected]'], fail_silently=False)
Z [email protected] że rzeczywiście agent u.
Jak już powiedziałem, już próbowałem to i działa dobrze. –
Mój dostawca usług hostingowych - Webfaction - zezwala tylko na wysyłanie wiadomości e-mail z adresu e-mail jawnie utworzonego w panelu administratora. Stworzenie jednego rozwiązało problem.
Używam webfaction i wysyłam e-maile z googlemail, więc nie sądzę, że to był naprawdę problem. –
Oznacza to, że wiadomości e-mail z błędami Django są wysyłane z wiadomości e-mail. –
oczywiście pozwala na wysyłanie wiadomości e-mail, jeśli używasz serwera smtp google, ale jeśli używasz smtp.webfaction.com jako hosta, to nie pozwoli ci, chyba że e-mail istnieje. Nie zmieniłem niczego i naprawiłem to, więc jestem prawie pewien, że to było to. –
Choć prawdopodobnie nie jest idealny, znalazłem Gmaila jako hosta SMTP działa dobrze. Jest użyteczny przewodnik pod adresem nathanostgard.com.
Zapraszam do publikowania odpowiednich ustawień pliku settings.py (w tym EMAIL_ *, SERVER_EMAIL, ADMINS (po prostu wyślij swój prawdziwy adres e-mail), MENEDŻERÓW i DEBUGA), jeśli chcesz mieć dodatkowy zestaw oczu, by sprawdzić literówki!
Sprawdź, czy masz DEBUG = False
W moim przypadku przyczyną był brak SERVER_EMAIL ustawienia.
Ustawieniem domyślnym dla SERVER_EMAIL
jest [email protected]
. Jednak wiele serwerów poczty e-mail, w tym , nie akceptuje wiadomości e-mail od takich podejrzanych adresów. Po cichu upuszczają e-maile.
Zmiana adresu e-mail nadawcy na rozwiązała problem. W settings.py
:
SERVER_EMAIL = '[email protected]'
Kolejna wskazówka, że prawdopodobnie jest to problem, jeśli sprawdzisz swój dziennik i zobaczysz wpis zawierający "powiadomienie o niedostarczeniu nadawcy". – jathanism
Chociaż minęło już trochę czasu, oto moja odpowiedź, tak, że inni ludzie mogą korzystać w przyszłości.
W moim przypadku, co uniemożliwiało wysłanie wiadomości e-mail na listę ADMINS, po wystąpieniu błędu było ustawienie specyficzne dla aplikacji. Używałem django-tłok, który zapewnia ustawienia atrybutów PISTON_EMAIL_ERRORS i PISTON_DISPLAY_ERRORS. Ustawienie odpowiednich ustawień umożliwiło serwerowi aplikacji powiadomienie o mojej wiadomości e-mail za każdym razem, gdy nastąpi awaria tłoków.
Miałem taką samą sytuację. Stworzyłem nowy projekt i aplikację i działało, więc wiedziałem, że to mój kod. Śledziłem to do słownika LOGGING w pliku settings.py.Kilka tygodni temu wprowadziłem kilka zmian w logowaniu się do Sentry, ale z jakiegoś powodu błąd zaczął się dzisiaj. Zmieniłem z powrotem do oryginału i dostał pracę:
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,
},
}
}
Potem zrobiłem kilka zmian powoli i dostał pracę z Sentry i wysyłając administratorów, jak również.
Ponadto konfiguracja LOGGING
zostaje domyślnie połączona z DEFAULT_LOGGING
, dlatego warto zapoznać się z the source code of django.utils.log.DEFAULT_LOGGING
, aby dowiedzieć się, co jeszcze może mieć wpływ na daną sytuację.
Pod Django 1.4 to naprawiło to za nas. – boatcoder
Naprawiono to dla mnie (Django 1.7). Dzięki – Paco
Dodanie ustawień rejestrowania zabiło moje e-maile administratora, które działały dobrze wcześniej z domyślnym rejestrowaniem. Przyjąłem 'disable_existing_loggers ': False' zachowałoby istniejące logowanie tak jak jest, ale tak się nie stało. To naprawiło to. – guidos
Jeśli z jakiegoś powodu ustawisz DEBUG_PROPAGATE_EXCEPTIONS na True (domyślnie jest to False), wiadomość e-mail do administratora nie będzie działać.
Inną możliwością wystąpienia błędu jest problem z ustawieniem ADMINS. Poniższe ustawienie spowoduje, że wysyłanie wiadomości do administratorów nie powiedzie się po cichu:
ADMINS = (
('your name', '[email protected]')
)
Co jest nie tak z tym? Dobrze ADMINS musi być krotką krotek, więc powyższe musi być sformatowany jako
ADMINS = (
('your name', '[email protected]'),
)
Uwaga przecinek spływu. Bez niepomyślnego przecinka adres "do" w wiadomości e-mail zostanie nieprawidłowo sformatowany (a następnie prawdopodobnie odrzucony po cichu przez serwer SMTP).
(Było to dzięki temu, że @cathal odpowiedział powyżej, uruchamiając lokalnie debugging serwera SMTP, który pozwolił mi zlokalizować to jako mój problem). – wxgeorge
Przepraszam, jeśli jest zbyt naiwny, ale w moim przypadku e-maile zostały wysłane, ale trafiły bezpośrednio do folderu SPAM. Przed wykonaniem bardziej skomplikowanych czynności sprawdź najpierw folder SPAM.
Właściwie .. tak. Miałem błędy od robotów indeksujących próbujących utworzyć żądanie AJAX bez danych formularza. Przeceniłem inteligencję filtrów antyspamowych i skończyłem z całą wiadomością e-mail wysłaną przez Django przechwyconą przez filtr antyspamowy. –
Za to, co jest warte, miałem ten problem i żadna z tych sugestii nie zadziałała. Okazuje się, że mój problem polegał na tym, że SERVER_EMAIL
został ustawiony na adres, którego nie rozpoznał serwer (Webfaction). Jeśli ta witryna była hostowana pod numerem na Webfaction (tak jak w przypadku moich innych witryn), nie stanowiłoby to problemu, ale ponieważ było to na innym serwerze, serwery Webfaction sprawdzały nie tylko uwierzytelnianie wysyłanego e-maila, ale także także wartość From:
.
Inną rzeczą, warto zwrócić uwagę jest to, że ustawienia handler500
może ominąć mechanizm, który wysyła błędy na 500 jeśli odpowiedź z punktu widzenia nie ma kodu statusu 500. Jeśli masz handler500
zestaw, który następnie w zobacz odpowiedz na coś takiego.
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
W moim przypadku jest to include_html
w mail_admins
.
Po ustawieniu include_html
na True
serwer pocztowy odrzuca wiadomość e-mail, ponieważ sądzi, że moje wiadomości e-mail są spamem.
Wszystko działa dobrze, gdy ustawię include_html
na False
.
... a potem jest błąd facepalm, kiedy używałem to w celu zapobieżenia rozwoju e-maile z wyjściem, a następnie przypadkowo skopiować ustawienie do produkcji:
# Print emails to console
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
(oczywiście, że don nie widać ich drukowania na konsoli podczas korzystania z serwera wsgi). Usunięcie ustawienia z produkcji naprawiło to dla mnie.
I jeszcze inna sprawa, że może się nie udać (ja po prostu dodać go do listy, dla tych osób, które kończą się tutaj mimo wszystkich wielkich odpowiedzi powyżej):
Nasza konfiguracja django używane SendGrid jak SMTP hosta i miał pojedynczy adres e-mail administratora zdefiniowany w ustawieniach django. To działało dobrze przez jakiś czas, ale w pewnym momencie wiadomości przestały przychodzić.
Okazuje się, że adres e-mail wylądował na liście "Wyrzucony" z nieznanego powodu, powodując, że wiadomości e-mail z tym adresem będą po cichu zrzucane na zawsze. Usunięcie adresu z tej listy i dodanie go do białej listy rozwiązało problem.
- 1. Django - Wyświetlanie różnych szablonów dla administratorów
- 2. wysyłanie danych z angularjs do django
- 3. Dodanie konta "Usługa sieciowa" do grupy administratorów
- 4. Django 1.7.8 nie wysyłanie e-maili z resetowania hasła
- 5. Jak utworzyć zaawansowany formularz wyszukiwania niestandardowego w administratorze Django i wyświetlić listę zmian dla administratorów Django
- 6. Wysyłanie JSON za pomocą klienta testowego django
- 7. Wysyłanie żądania jQuery do Django REST Framework Wyniki w nie znalezionym błędzie obiektu JSON
- 8. wyłączanie agregacji Drupala CSS/JS dla administratorów
- 9. Django pracownik do selera wysyłanie wiadomości w czasie rzeczywistym i komunikaty o wynikach do interfejsu użytkownika
- 10. Wysyłanie wiadomości e-mail z Django za pośrednictwem hostowanego SMTP
- 11. wysyłanie sms do wielu odbiorców
- 12. Wysyłanie danych jquery do Express
- 13. Problemy z Django wysyłanie wiadomości e-mail przez smtp.gmail.com
- 14. Wysyłanie wiadomości do unikalnego gniazda
- 15. Wysyłanie wiadomości e-mail asynchronicznie z załącznikiem w Django
- 16. Wysyłanie tablicy PHP do JavaScript
- 17. Wysyłanie SIGINT do podprocesowania pythona
- 18. Programowe wysyłanie aplikacji do tła
- 19. Wysyłanie plików PDF do iBooks
- 20. ARC: wysyłanie zera do obiektu nie wywołuje natychmiast jego dealloc
- 21. Wysyłanie połączenia REST do serwera Google Cloud PHPMyAdmin nie działa?
- 22. Wysyłanie obiektu request.user do ModelForm z ogólnego widoku opartego na klasach w Django
- 23. Tworzenie grupy administratorów Hyper-V w systemie Windows 10
- 24. Django nie odzwierciedla aktualizacji do plików JavaScript?
- 25. Nie można się zalogować do administratora Django
- 26. Django - Kwerenda pasująca do witryny nie istnieje
- 27. Wysyłanie żądania śledzącego jdwp nie powiodło się!
- 28. Crashlytics nie wysyłanie raportów o awariach [iOS]
- 29. Jeden kontroler, różne widoki dla zwykłych użytkowników i administratorów
- 30. Narzędzia GUI dla programistów i administratorów dla Hadoop
Widzę komunikat, ale jeśli ustawię go z powrotem na moje ustawienia e-mail, to nie działa –
również dodał to, działa dobrze, ale wciąż nic się nie zmienia po przywróceniu normalnych ustawień – Harry