2012-10-22 7 views
6

Ich bin nicht einmal sicher, wie man das debuggt: Ich benutze send_mail in einer meiner Ansichten in Django. Es funktioniert gut, wenn Sie die App lokal verwenden (mit den gleichen SMTP-Einstellungen, die ich in der Produktion verwende), und es funktioniert gut von der Shell in der Produktion (wieder mit den gleichen Einstellungen). Aber wenn ich die App tatsächlich in der Produktion nutze, wird die Nachricht nicht gesendet. Irgendeine Idee, wie man Fehler findet?Send_mail in Django, arbeitet in der Shell, arbeitet lokal, nicht in Sicht

Ich werde nicht in der gesamten Ansicht einfügen, aber hier ist der relevante Abschnitt.

if request.method == 'POST': 
    message, form = decideform(request.POST) 
    if form.is_valid(): 
     invitation.status = form.cleaned_data['status'] 
     invitation.save() 
     message, form = decideform(request.POST) 
     update = 'Thank you for updating your status.' 

     # Send an email confirming their change 
     subject = 'Confirming your RSVP [%s %s]' % (invitation.user.first_name, invitation.user.last_name) 
     body = message + ' Remember, the URL to update or change your RSVP is http://the.url%s.' % invitation.get_absolute_url() 
     send_mail(subject, body, '[email protected]', ['[email protected]', invitation.user.email], fail_silently=True) 

Und hier die entsprechenden Bits aus meiner local_settings Datei, mit ausgeprägten Details für die Sicherheit willen verändert:

EMAIL_HOST = 'mail.mydomain.com' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
EMAIL_HOST_USER = '[email protected]' 
DEFAULT_FROM_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'p4ssw0rd' 
+3

Willkommen bei SO! Haben Sie versucht, 'fail_silently = False' zu ​​verwenden und nach einer' SMTPException' zu suchen? –

+0

Danke, César! Ich habe es mit dem Fail_Silently-Flag auf False (lokal, in der Produktions-Shell und von der App in der Produktion) versucht und keine SMTPExceptions zu irgendeinem Zeitpunkt abgefangen. (Ich gehe davon aus, dass die App in der Produktion diese Ausnahme in das Fehlerprotokoll schreiben würde.) – mthomps

Antwort

0

Überprüfen Sie die Berechtigungen. Es könnte sein, dass Sie die Berechtigung haben, send_mail auszuführen, die App jedoch nicht.

0

Ich habe das gleiche Problem. 3 Jahre nach der :) den Code send_mail Inline Kopieren es fest, aber ich weiß immer noch nicht, warum

 connection = django.core.mail.get_connection(username=None, password=None, fail_silently=False) 
     mail = django.core.mail.message.EmailMessage('hello', 'world', '[email protected]', ['[email protected]'],            connection=connection) 
     mail.send()    
0

können Sie versuchen-sendgrid django statt, welche zu configure.Use Einstellungen, wie dieses

sehr einfach
EMAIL_BACKEND = "sgbackend.SendGridBackend" 
SENDGRID_USER = 'xxxxxx' 
SENDGRID_PASSWORD = 'xxxxxx' 
EMAIL_PORT = 1025 
Verwandte Themen