Skip to main content

Creating e-mail messages, with multiple layouts and multilingual content.

Project description

fluentcms-emailtemplates

https://img.shields.io/travis/django-fluent/fluentcms-emailtemplates/master.svg?branch=master https://img.shields.io/pypi/v/fluentcms-emailtemplates.svg https://img.shields.io/badge/wheel-yes-green.svg https://img.shields.io/pypi/l/fluentcms-emailtemplates.svg https://img.shields.io/codecov/c/github/django-fluent/fluentcms-emailtemplates/master.svg

An email template system, that uses django-fluent-contents blocks to define the e-mail templates.

Features:

  • Multilingual content.
  • Multisite support.
  • Custom layouts (=Django templates).
  • Custom context variables

Installation

First install the module, preferably in a virtual environment. It can be installed from PyPI:

pip install fluentcms-emailtemplates

First make sure the project is configured for django-fluent-contents.

Then add the following settings:

INSTALLED_APPS += (
    'fluentcms_emailtemplates',
    'fluentcms_emailtemplates.plugins.emailtext',
)

FLUENTCMS_EMAILTEMPLATES_PLUGINS = (
    'EmailTextPlugin',
)

The database tables can be created afterwards:

./manage.py migrate

Configuration

The following settings are defined by default:

FLUENTCMS_EMAILTEMPLATES_LAYOUTS = (
    # A layout points to a template named:
    # fluentcms_emailtemplates/emails/{slug}/{layout}.html
    # fluentcms_emailtemplates/emails/{layout}.html
    ('default', _("Default")),
)

# Possible plugins to use in the email template.
# By default, that is FLUENT_CONTENTS_PLACEHOLDER_CONFIG['email_templates']
FLUENTCMS_EMAILTEMPLATES_PLUGINS = (
    'EmailTextPlugin',
)

# Add extras context data for an e-mail preview.
FLUENTCMS_EMAILTEMPLATES_PREVIEW_CONTEXT = {}

# Optionally allow developers to share email templates between all sites in a multisite setup.
FLUENTCMS_EMAILTEMPLATES_ENABLE_CROSS_SITE = False

# Enable multisite support by default
FLUENTCMS_EMAILTEMPLATES_FILTER_SITE_ID = True

Usage

Create email templates in the admin. Use the following code to create an email:

from email.utils import formataddr
from fluentcms_emailtemplates.models import *

template = EmailTemplate.objects.get_for_slug('order-confirmation')
email = template.get_email_message(
    base_url='http://example.org/',
    context={
        'order_number': "123-xy"
    },
    to=[
        formataddr(('You', 'you@example.org')),
    ],
)

email.send()

Tip: when creating a separate template for the plain-text email, start the template with {% autoescape off %}. This avoids creating HTML entities inside the plain-text email.

Contributing

If you like this module, forked it, or would like to improve it, please let us know! Pull requests are welcome too. :-)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
fluentcms_emailtemplates-2.0-py2.py3-none-any.whl (37.2 kB) Copy SHA256 hash SHA256 Wheel py2.py3
fluentcms-emailtemplates-2.0.tar.gz (27.2 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page