2013-06-12 2 views
6

Ich habe eine Django (v1.4) Seite auf Heroku mit Mandrill für SMTP. Ich habe alle erforderlichen Werte in meinem Einstellungsdatei:Django + Heroku + Mandrill mail_admins() funktioniert nicht, entweder manuell oder wie ausgelöst durch 500 Fehler

  • EMAIL_HOST_PASSWORD
  • EMAIL_HOST_USER
  • EMAIL_HOST
  • EMAIL_PORT
  • SERVER_EMAIL (auf eine reale Adresse, nicht root @ localhost)

Ich kann regelmäßige E-Mails ganz einfach mit send_messages() manuell vom Client senden. Es werden jedoch keine E-Mails gesendet, wenn für 500 Fehler und der Aufruf von mail_admins im Client keine Fehler erzeugt, aber auch keine E-Mail gesendet wird.

Hier ist meine Logging Setup:

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, 
     }, 
    } 
} 

Und mein ADMINS:

ADMINS = (
    ('My Name', '[email protected]'), 
) 

ich meinen Spam-Ordner überprüft haben, und es gibt dort nichts. Fehle ich etwas in den Einstellungen? Oder etwas anderes?

+0

Was bedeutet das Fehlerprotokoll sagen? – karthikr

Antwort

13

Haben Sie Ihre Mandrill-API-Protokolle überprüft?

Ich habe das gleiche Problem und bemerkte, dass die E-Mails an die Mandrill-API gesendet werden (da ich meine SMTP-Einstellungen für Mandrill in settings.py gesetzt), aber dass die from_email und from_name in den API-Aufrufe leer sind.

Also habe ich https://github.com/brack3t/Djrill gefunden und bin dabei, es zu installieren. Ich werde Sie wissen lassen, ob es "einfach funktioniert".

EDIT: Also nach der Installation von djrill und nach der Dokumentation bekomme ich fehlgeschlagen API-Aufrufe für Fehlermeldungen - die from_email wird als "root @ localhost" aus irgendeinem Grund angezeigt.

Wenn ich die Shell-Test auf der GitHub Seite gezeigt werden, sind (mit einer E-Mail von einer akzeptierten Domäne für meine Mandrill Konto ersetzen Djrill Sender), funktioniert es:

from django.core.mail import send_mail 

send_mail("It works!", "This will get sent through Mandrill", 
    "Djrill Sender <[email protected]>", ["[email protected]"]) 

Es stellt sich heraus, dass ich meine Standard hatte "Von" E-Mail-Einstellungsname verwechselt. Es heißt SERVER_EMAIL. Siehe https://docs.djangoproject.com/en/1.3/ref/settings/#std:setting-SERVER_EMAIL.

Also folgend in settings.py mein Problem behoben:

SERVER_EMAIL = [email protected] 
+1

die SERVER_MAIL-Konfiguration funktioniert für mich! – azuax

+0

Ja, fehlende SERVER_MAIL-Einstellungen waren definitiv das Problem. – Rias

+0

Dies wird Ihren Stack Overflow Score in die Höhe schnellen lassen. Vielen Dank. – MagicLAMP

Verwandte Themen