Итак, у нас задача декомпозируется на 1) получение FlatPage, 2) рендер шаблона, 3) отправка email. Все три пункта тривиальны и в документации так или иначе описаны. Мне удобнее получать FlatPage по предопределённому url. Рендер использует стандартный шаблонизатор django. Переменные какие надо передаются в шаблон обычным образом через Context. Мыло отправляем через EmailMultiAlternatives, прикладывая html-версию письма. Текстовую версию тоже надо бы предусмотреть, её я получаю просто отрезая теги.
from django.core.mail import EmailMultiAlternatives from django.contrib.flatpages.models import FlatPage from django.template.loader import get_template_from_string from django.template import Context from django.utils.html import strip_tags # получаем флэт-паге mail_template = FlatPage.objects.get(url='/send_mail/') # рендерим шаблон t = get_template_from_string(mail_template.content) body_html = t.render(Context({'var1': ...})) # текстовый вариант body_text = strip_tags(body_html) # отправка msg = EmailMultiAlternatives(mail_template.title, body_text, settings.SERVER_EMAIL, [mail_to]) msg.attach_alternative(body_html, "text/html") msg.send()
Если html не нужен, то можно было сделать ещё проще:
from django.core.mail import send_mail send_mail(mail_template.title, body, settings.SERVER_EMAIL, [mail_to], fail_silently=True)
Комментариев нет:
Отправить комментарий