Overview -------- The ``EmailMessage (https://docs.djangoproject.com/en/1.9/topics/email/#the-emailmessage-class)`` class in Django accepts a number of arguments, and when you're sending emails from your app, you need to supply them. Sometimes this is simple, as the values are fixed (i.e. from_email), whilst others are more dynamic (such as the message body). One way or another you need to produce these values and pass them to the class. And sometimes you want ``EmailMultipartMessage`` instead, for instane when you want to send plain text _and_ html. The ``build_message`` function helps you do this by letting you pass arguments, as well as use blocks from a template to render others. The Arguments ============= As shown in the Django docs, the ``EmailMessage`` class takes the following arguments: - subject - body - from_email - to - bcc - connection - attachments - headers - cc - reply_to The ``build_message`` function will accept and and all of them as keyword arguments, but will also try to render any blocks with those names from the provided template and update the values from there. Any mix of keyword and template supplied arguments is valid, as long as there are enough to satisfy the ``EmailMessage`` class. The unsent message instance is returned, so you can update fields, override them, add attachments or headers, or anything else you like before sending.