Irgendwie bekomme ich bei der Verwendung von django 1.7 mit dem Standard-E-Mail-Backend eine Fehlermeldung: 111 Verbindung abgelehnt. Dies wird als Ausnahme ausgelöst, auch wenn der Parameter fail_silently auf True gesetzt ist.
Die Linie geht so:
return send_mail(subject=u"Bienvenido a Mi CNT!",
message=render_to_string("micnt/mail.welcome.txt", context),
from_email=settings.DEFAULT_FROM_EMAIL,
recipient_list=[email_address],
fail_silently=True,
html_message=render_to_string("micnt/mail.welcome.html", context))
Ich weiß, wie ich die Ausnahme korrigieren kann (ich habe es vergessenbestimmte Parameter konfigurieren). Es kann jedoch Fälle geben, in denen die Ausnahme möglicherweise aus anderen Gründen vorliegt (z. B. habe ich die E-Mail-Parameter richtig angegeben, der Server ist jedoch ausgefallen).
Warum ist fail_silently
funktioniert nicht? Was ist der "Umfang" von fail_silently
? (d. h. welche Fehler deckt er ab und welche Fehler werden an den Aufrufer übergeben?).
Ich möchte die Ausnahmen korrekt abdecken, ohne:
try:
return send_mail(...)
except Exception as e:
# I want to understand what exception types will be triggered here.
pass
Antworten:
1 für die Antwort № 1fail_silently
werde nur fangen SMTPException
"s wann send_mail
versucht, eine Verbindung zum E-Mail-Server herzustellen (wird ausgeführt get_connection
).
Ich nehme gerne solche Themen als Gelegenheit, den Django-Quellcode zu untersuchen, der alle Antworten enthält:
https://github.com/django/django/blob/master/django/core/mail/backends/smtp.py#L69