不知何故,使用django 1.7和默认的电子邮件后端,我收到一个错误:111 Connection Refused。即使fail_silently参数为True,也会将其作为异常触发。
这条线是这样的:
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))
我知道如何解决这个问题(我忘了配置某些参数)。但是,有些情况下,异常可能是由于其他原因(例如我正确指定了邮件参数,但服务器已关闭)。
为什么fail_silently
无效?什么是"范围" fail_silently
的? (即它覆盖了哪些错误,以及哪些错误会传递给调用者?)。
我想正确地覆盖例外而不必:
try:
return send_mail(...)
except Exception as e:
# I want to understand what exception types will be triggered here.
pass
答案 0 :(得分:1)
fail_silently
尝试连接到电子邮件服务器(执行SMTPException
)时, send_mail
将仅捕获get_connection
。
我喜欢把这样的问题作为研究django源代码的机会,其中包含所有答案:
https://github.com/django/django/blob/master/django/core/mail/backends/smtp.py#L69