我在我的应用程序中的不同位置发送电子邮件。
msg.send(fail_silently=True)
有助于避免在发送电子邮件时出现错误时向最终用户显示错误页面。是否可以捕获此错误以便我创建日志或执行自定义函数?
注意: 我正在使用Django 1.10.4和Python 3.5。
答案 0 :(得分:6)
正如它在send_email
(https://docs.djangoproject.com/en/1.10/topics/email/#send-mail)的Django文档中所述:
fail_silently :布尔值。如果它为False,send_mail将引发smtplib.SMTPException。请参阅smtplib文档以获取可能的异常列表,所有这些异常都是SMTPException的子类。
所以你可以这样做:
from smtplib import SMTPException
try:
msg.send()
except SMTPException as e:
print('There was an error sending an email: ', e)
答案 1 :(得分:0)
试试这个!它将涵盖任何类型的可能错误。
from smtplib import SMTPException
try:
send_mail(subject, message, from_email, [to_email], fail_silently=False)
except BadHeaderError: # If mail's Subject is not properly formatted.
print('Invalid header found.')
except SMTPException as e: # It will catch other errors related to SMTP.
print('There was an error sending an email.'+ e)
except: # It will catch All other possible errors.
print("Mail Sending Failed!")