Selon le documentation, si DEBUG
est réglé sur False
et quelque chose est fourni sous le paramètre ADMINS
, Django envoie un e-mail chaque fois que le code soulève un code 500 d'état. J'ai les paramètres d'email remplis correctement (car je peux bien utiliser send_mail) mais chaque fois que je mets intentionnellement du code erroné, j'obtiens mon template 500.html mais aucune erreur d'email n'est envoyée. Qu'est-ce qui pourrait faire que Django ne fasse pas ça?Django ne pas envoyer des e-mails aux administrateurs
Répondre
Assurez-vous que vos EMAIL_HOST et EMAIL_PORT sont configurés directement dans settings.py (ils se réfèrent à votre serveur SMTP). Cela peut supposer que vous avez un serveur SMTP s'exécutant sur localhost.
Pour tester ce local, exécutez le serveur SMTP de test de Python intégré:
python -m smtpd -n -c DebuggingServer localhost:1025
Réglez ensuite ces valeurs dans votre settings.py
EMAIL_HOST='localhost'
EMAIL_PORT=1025
déclenchement d'une erreur 500, et vous devriez voir l'e-mail apparaît dans la fenêtre du terminal python smtpd.
Essayez cette
# ./manage shell
>>> from django.core.mail import send_mail
>>> send_mail('Subject here', 'Here is the message.', '[email protected]',['[email protected]'], fail_silently=False)
Avec un [email protected] que vous obtenez effectivement courriel.
Comme je l'ai dit, j'ai déjà essayé et ça marche bien. –
Mon fournisseur d'hébergement Web - Webfaction - permet uniquement l'envoi de courriels à partir d'un courriel explicitement créé dans le panneau de l'administrateur. Créer un a résolu le problème.
J'utilise la webfaction et j'envoie des e-mails de googlemail, donc je ne pense pas que c'était vraiment le problème. –
En d'autres termes, les e-mails d'erreur Django sont envoyés par googlemail. –
cela vous permet évidemment d'envoyer des emails si vous utilisez le serveur smtp de google, mais si vous utilisez smtp.webfaction.com en tant qu'hôte, il ne vous laissera pas à moins que l'email n'existe. Je n'ai rien changé d'autre et ça l'a arrangé, donc je suis à peu près sûr que c'était ça. –
Bien que probablement pas idéal, j'ai trouvé l'utilisation de Gmail comme l'hôte SMTP fonctionne très bien. Il y a un guide utile au nathanostgard.com. N'hésitez pas à poster vos sections settings.py pertinentes (y compris EMAIL_ *, SERVER_EMAIL, ADMINS (sortez votre vrai email), MANAGERS, et DEBUG) si vous voulez un œil supplémentaire pour vérifier les fautes de frappe!
Assurez-vous que vous avez DEBUG = False
Dans mon cas, la mise en cause de SERVER_EMAIL était manquante. La valeur par défaut pour SERVER_EMAIL
est [email protected]
. Mais de nombreux serveurs de messagerie, y compris mon fournisseur de messagerie n'acceptent pas les e-mails provenant de ces adresses suspectes. Ils abandonnent silencieusement les emails.
La modification de l'adresse e-mail de l'expéditeur à [email protected]
a résolu le problème. En settings.py
:
SERVER_EMAIL = '[email protected]'
Une autre indication que c'est probablement le problème est si vous vérifiez votre journal de courrier et voyez une entrée contenant 'la notification de non-remise d'expéditeur'. – jathanism
Bien qu'il a été un certain temps, voici ma réponse, de sorte que d'autres puissent bénéficier à l'avenir. Dans mon cas, ce qui empêchait l'envoi de courriels à la liste ADMINS, lorsqu'une erreur se produisait, était un paramètre spécifique à l'application. J'utilisais django-piston, qui fournit les attributs de configuration PISTON_EMAIL_ERRORS et PISTON_DISPLAY_ERRORS. En les réglant en conséquence, le serveur d'application a pu m'en informer par courrier, à chaque fois que le piston se bloquait.
J'avais la même situation. J'ai créé un nouveau projet et une application et cela a fonctionné, donc je savais que c'était mon code. Je l'ai retrouvé jusqu'au dictionnaire LOGGING dans settings.py.J'avais fait quelques changements il y a quelques semaines pour se connecter avec Sentry, mais pour une raison quelconque, l'erreur vient de commencer aujourd'hui. J'ai changé à l'original et obtenu ce travail:
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,
},
}
}
Ensuite, je fait quelques changements lentement et ai eu à travailler avec Sentry et emailing admins ainsi.
En outre, la configuration LOGGING
est fusionnée avec DEFAULT_LOGGING
par défaut, il est donc utile de jeter un coup d'œil à the source code of django.utils.log.DEFAULT_LOGGING
pour comprendre ce qui peut avoir un effet sur votre situation particulière.
Sous Django 1.4 cela nous l'a fixé. – boatcoder
Cela l'a corrigé pour moi (Django 1.7). Merci – Paco
Ajout de paramètres de journalisation a tué mes e-mails d'administration, qui a bien fonctionné avant la journalisation par défaut. J'ai supposé que 'disable_existing_loggers ': False' garderait la notation existante telle quelle, mais ce n'est pas le cas. Cela l'a réparé. – guidos
Si, pour une raison quelconque, vous définissez DEBUG_PROPAGATE_EXCEPTIONS sur True (c'est faux par défaut), le courrier électronique envoyé à l'administrateur ne fonctionnera pas.
Une autre possibilité d'erreur est un problème avec votre réglage ADMINS. Le paramètre suivant entraînera l'échec de l'envoi du courrier aux administrateurs:
ADMINS = (
('your name', '[email protected]')
)
Qu'est-ce qui ne va pas? Eh bien ADMINS doit être un tuple de tuples, de sorte que les besoins ci-dessus pour être formaté comme
ADMINS = (
('your name', '[email protected]'),
)
Notez la virgule finale. Sans la virgule défaillante, l'adresse «à» de l'e-mail sera mal formatée (et probablement rejetée silencieusement par votre serveur SMTP).
(C'était grâce à la réponse de @cathal ci-dessus en cours d'exécution d'un serveur SMTP de débogage qui m'a permis de localiser cela comme mon problème). – wxgeorge
Désolé si c'est trop naïf, mais dans mon cas les emails ont été envoyés mais allaient directement dans le dossier SPAM. Avant d'essayer des choses plus compliquées, vérifiez d'abord votre dossier SPAM.
En fait .. oui. J'ai eu des erreurs de robots essayant de faire une requête AJAX sans données de formulaire. J'ai surestimé l'intelligence des filtres anti-spam et je me suis retrouvée avec tous les emails envoyés par Django en train d'être interceptés par le filtre anti-spam. –
Pour ce que ça vaut, j'ai eu ce problème et aucune de ces suggestions n'a fonctionné pour moi. Il s'est avéré que mon problème était que SERVER_EMAIL
a été défini à une adresse que le serveur (Webfaction) n'a pas reconnu. Si ce site était hébergé sur Webfaction (comme mes autres sites), ce ne serait pas un problème, mais comme c'était sur un serveur différent, les serveurs de Webfaction vérifient non seulement l'authentification de l'email envoyé, mais aussi la valeur From:
également.
Une autre chose à noter ici est que les paramètres handler500
pourraient contourner le mécanisme qui envoie des erreurs sur 500 si la réponse de la vue ne dispose pas d'un code d'état de 500. Si vous avez un ensemble handler500
, alors dans ce voir répondre avec quelque chose comme ça.
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
Dans mon cas, il est le include_html
dans mail_admins
.
Lorsque je mets include_html
à True
, le serveur de courrier électronique refuse d'envoyer mon email car il pense que mes emails sont des spams. Tout fonctionne très bien quand j'ai réglé include_html
à False
.
... et puis il y a l'erreur de facepalm, lorsque vous avez utilisé ce dans le développement des e-mails pour éviter de sortir, puis copiez accidentellement la mise en production:
# Print emails to console
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
(vous don cours ne les voyez pas être imprimé à la console en utilisant un serveur wsgi). Retrait du réglage de la production fixé pour moi.
Et encore une autre chose qui peut aller mal (je vais l'ajouter à la liste, pour les personnes qui se retrouvent ici en dépit de toutes les grandes réponses ci-dessus):
Notre configuration de django utilisé SendGrid comme smtp hôte et avait une seule adresse e-mail administrateur définie dans les paramètres django. Cela a bien fonctionné pendant un certain temps, mais à un moment donné, les mails ont cessé d'arriver. Il s'avère que l'adresse de courrier électronique s'est retrouvée dans la liste SendGrid 'Bounce' pour une raison inconnue, ce qui a entraîné la suppression silencieuse des courriels de cette adresse pour toujours. Supprimer l'adresse de cette liste et la mettre en liste blanche a permis de résoudre le problème.
- 1. postfix: Comment envoyer des emails aux utilisateurs
- 2. pour envoyer des emails de Google appengine
- 3. Comment envoyer des emails signés depuis java?
- 4. Comment envoyer des emails HTML/CSS?
- 5. Comment envoyer des emails via un programme C++?
- 6. Envoyer des emails à plusieurs utilisateurs en utilisant PHP/Javascript
- 7. Envoyer des emails à partir de code - Frameworks
- 8. Comment envoyer des emails si SMTP n'est pas chargé sur le serveur?
- 9. Envoyer des frappes de touches aux jeux
- 10. C# Outlook ne déplace pas tous les emails
- 11. Django Recherche ne pas apporter des mots avec des accents
- 12. UIViewController ne répond pas aux touches
- 13. Envoi de messages aux utilisateurs de Django
- 14. Java code réseau ne pas envoyer
- 15. Django, SORL-pouce ne je ne sais pas fonctionne pas
- 16. PHP: Pouvons-nous créer une application web pour envoyer des emails depuis localhost, comme ThunderBirds, OutLook.
- 17. Accéder aux interfaces des classes qui ne les implémentent pas?
- 18. Django Widget Media ne fonctionne pas
- 19. Django Forms - Comment ne pas valider?
- 20. Protégez les informations sensibles des administrateurs de collection de sites
- 21. Comment configurer WAMP (localhost) pour envoyer des emails en utilisant Gmail?
- 22. Envoyer des emails (en utilisant Postfix) à partir de deux domaines différents
- 23. Comment envoyer des emails au format HTML avec Microsoft Enterprise Library?
- 24. Trouver des emails manquants dans SQL Server
- 25. django sans slash ne redirige pas
- 26. La relation Django ne fonctionne pas?
- 27. django newb, ne pas voir la publication
- 28. Regroupement Django ne fonctionne pas comme prévu
- 29. Django transaction.commit_on_success ne pas annuler la transaction
- 30. L'application ne s'affichera pas dans l'admin django
Je vois le message, mais si je le remets à mes paramètres d'email cela ne fonctionne pas –
a également ajouté cela, fonctionne bien, mais toujours rien ne change lorsque les paramètres normaux – Harry