File with text template
# file mail_order.txt Hello, dear {{ user_name }}! You ordered ... --- Best regards, SuperShop!
File with html template
# file mail_order.html <!DOCTYPE html> <html> <head> <style> ... </style> </head> <body> <h3>Hello, dear {{ user_name }}!</h3> You ordered <table> ... </table> --- <strong>Best regards, SuperShop!</strong> </body> </html>
File with view
from django.views.generic.edit import FormView from django.core.urlresolvers import reverse from django.shortcuts import redirect from django.core.mail import EmailMultiAlternatives from django.template.loader import render_to_string class OrderView(FormView): form_class = OrderForm template_name = "basket/order_form.html" def get_initial(self): init = {'agree': True} return init def get_success_url(self): return reverse('basket:thanks') def get_context_data(self, **kwargs): context = super(OrderView, self).get_context_data(**kwargs) ... return context def form_valid(self, form): order = form.save() subject, from_email, to = BASKET_MAIL_SUBJECT, BASKET_MAIL_FROM, BASKET_MAIL_TO ctx = {'order': order} text_content = render_to_string('basket/mail_order.txt', ctx).encode("utf-8") html_content = render_to_string('basket/mail_order.html', ctx).encode("utf-8") subject = subject % order.amount msg = EmailMultiAlternatives(subject, text_content, from_email, [to]) msg.attach_alternative(html_content, "text/html") msg.send() return redirect(self.get_success_url())