Добрый день.
Я пытаюсь поймать исключение при посылке е-мейла. То есть в случае если емейла, на который я хочу послать, не существует(или по каким-то причинам не удалось отправить) я хочу вызывать исключение.
Сделал функцию (для того, чтобы шаблоны в Тему и Тело сообщения писать)
import smtplib
from django.core.mail import EmailMultiAlternatives, EmailMessage
from rest_framework.exceptions import ParseError
def send_email(to_email, from_email, context, subject_template_name,
plain_body_template_name=None, html_body_template_name=None):
assert plain_body_template_name or html_body_template_name
subject = loader.render_to_string(subject_template_name, context)
subject = ''.join(subject.splitlines())
if plain_body_template_name:
plain_body = loader.render_to_string(plain_body_template_name, context)
email_message = EmailMultiAlternatives(subject, plain_body, from_email, [to_email])
if html_body_template_name:
html_body = loader.render_to_string(html_body_template_name, context)
email_message.attach_alternative(html_body, 'text/html')
else:
html_body = loader.render_to_string(html_body_template_name, context)
email_message = EmailMessage(subject, html_body, from_email, [to_email])
email_message.content_subtype = 'html'
try:
email_message.send(fail_silently=False)
print 'Ok'
except smtplib.SMTPException, e:
print 'Fail'
raise ParseError('E-mail problem: '+ str(e))
Использую в какой-ниюбудь вьюхе:
context = {
'username': username,
'site_name': 'MY_SITE',
'protocol': my_server_prefix,
'domain': '/registration/confirm/',
'activation_key': activation_key,
}
email_body = 'activation_email_body_MY.html'
email_subject = 'activation_email_subject_MY.html'
send_email(email, 'mysitesupport@yandex.ru', context, email_subject,
plain_body_template_name=email_body)
В итоге исключение не ловится... То есть при любом емейле print 'Ok'
Не могу понять в чем проблема.. Подскажите плиз.