A Django app for allowing users to create html emails using Django template variables passed in to the context.
Use the package manager pip to install django-html-emailtemplates.
pip install django-html-emailtemplates
Add the package to your INSTALLED_APPS
INSTALLED_APPS = [
...
'emailtemplates',
...
]
# models.py
from emailtemplates.fields import EmailTemplateField
class Settings(models.Model):
contact_form_reply = EmailTemplateField(
models.SET_NULL,
null=True,
email_context="""
You can use the following variables in the template:
{{ name }}
{{ subject_matter }}
{% for item in items %}
Possible values are:
{{ item.title }}
{{ item.cost }}
{{ item.description }}
{% endfor %}
"""
)
# views.py
from emailtemplates.utils import send_email_template
from emailtemplates.models import EmailTemplate
from .models import Settings
# view definition
def form_valid(self, form):
enquiry = form.save()
# send reply email to website user
send_email_template(
Settings.objects.first().contact_form_reply,
[enquiry.email],
{
'name': enquiry.name,
'subject_matter': enquiry.subject,
'items': [
{
'title': 'Product',
'cost': '£20.00',
'description': 'Product description...'
}
]
}
)
# send notification to website owner
send_email_template(
EmailTemplate(
subject='Enquiry from example.com',
content='''<div>
<p>There was an enquiry on your website, the details are below:</p>
<table>
<tbody>
<tr>
<td>Name:</td>
<td>{{ enquiry.name }}</td>
</tr>
</tbody>
</table>
</div>'''
),
['contact@example.com'],
{
'enquiry': enquiry
}
)
- Add base email header/footer
- Add plugins for images/documents
- Add better html field
- Add support for Wagtail StreamField