Skip to main content

An extension for django-templated-email for creating emails with Markdown

Project description

django-templated-email-md

PyPI Status Python Version License

Read the documentation at https://django-templated-email-md.readthedocs.io/ Tests Codecov

pre-commit Black

Features

  • Markdown Templates: Write email templates using Markdown syntax for cleaner and more readable templates.
  • Automatic Conversion: Automatically converts Markdown to HTML and generates a plain text version of emails.
  • CSS Inlining: Inlines CSS styles for better email client compatibility using Premailer.
  • Seamless Integration: Works as an extension of django-templated-email, allowing for easy integration into existing projects.
  • Template Inheritance: Supports Django template inheritance and template tags in your Markdown templates.

Installation

You can install django-templated-email-md via pip from PyPI:

pip install django-templated-email-md

Add to INSTALLED_APPS

Add templated_email_md to your INSTALLED_APPS in settings.py:

INSTALLED_APPS = [
    # ...
    'templated_email_md',
    # ...
]

Configuration

Assuming you have already installed and configured django-templated-email, update your Django settings as follows:

# settings.py

# Configure the templated email backend
TEMPLATED_EMAIL_BACKEND = 'templated_email_md.backend.MarkdownTemplateBackend'

# Optional: Specify the base HTML template for wrapping your content. See the Usage guide for details.
TEMPLATED_EMAIL_BASE_HTML_TEMPLATE = 'templated_email/markdown_base.html'

# Set the directory where your email templates are stored
TEMPLATED_EMAIL_TEMPLATE_DIR = 'templated_email/'  # Ensure there's a trailing slash

# Define the file extension for your Markdown templates
TEMPLATED_EMAIL_FILE_EXTENSION = 'md'

# Optional: Specify Markdown extensions if needed
TEMPLATED_EMAIL_MARKDOWN_EXTENSIONS = [
    'markdown.extensions.extra',
    'markdown.extensions.meta',
    'markdown.extensions.tables',
]

Usage

Creating Markdown Templates

Place your Markdown email templates in the templated_email/ directory within your project's templates directory. For example, create a file templated_email/welcome.md:

{% block subject %}Test Email{% endblock %}
{% block preheader %}Thanks for signing up!{% endblock %}

{% block content %}
# {{ user.first_name }}, you're in!

![Gorgeous, golden potato, Spedona, CC BY-SA 3.0 https://creativecommons.org/licenses/by-sa/3.0, via Wikimedia Commons](https://upload.wikimedia.org/wikipedia/commons/a/a4/Icone_pdt.png)

## Welcome to The Potato Shop

### Hello {{ user.fiest_name }}! 👋

> You have been invited to set up an account at the Potato shop on behalf of  **{{ inviter.name }}**.

Please click [this link]({% url 'invitations:accept-invite' key=invitation.key %}) to establish your account.

{% blocktranslate %}You will be directed to the 'set password' tool, where you can establish your account password.{% endblocktranslate %}

---

Best regards,

*Jack Linke*
Potato Shop, LLC - Managing Director

*Semi-round, Starchy Veggies for All*
{% endblock %}

Sending Emails

Use the send_templated_mail function to send emails using your Markdown templates, just as you would with the base django-templated-email package:

from templated_email import send_templated_mail

send_templated_mail(
    template_name='welcome',
    from_email='Potato Shop Support <support@mashedupyum.com>',
    recipient_list=['terrence3725fries@wannamashitup.com'],
    context={
        'user': request.user,
        'inviter': inviter,
    },
)

The Result

Inbox Preview

Inbox Preview

Email Preview

Email Preview

More detailed information can be found in the usage guide.

Documentation

For more detailed information, please refer to the full documentation.

Contributing

Contributions are very welcome. To learn more, see the Contributor Guide.

License

Distributed under the terms of the MIT license, django-templated-email-md is free and open source software.

Issues

If you encounter any problems, please file an issue along with a detailed description.

Credits

We are grateful to the maintainers of the following projects:

This project was generated from @OmenApps's Cookiecutter Django Package template.

Project details


Download files

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

Source Distribution

django_templated_email_md-2024.10.5.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file django_templated_email_md-2024.10.5.tar.gz.

File metadata

File hashes

Hashes for django_templated_email_md-2024.10.5.tar.gz
Algorithm Hash digest
SHA256 5ba85b417678bbb6e4a27b86a4e5021c2baf417cc1a4a824acdb098c25c6d351
MD5 120be3dd2acca2d1c1614098ec0a297c
BLAKE2b-256 0a2f591f005e48420f506134c23b8dcf56bde9b73714dabca7cdeb1e90a4b24d

See more details on using hashes here.

File details

Details for the file django_templated_email_md-2024.10.5-py3-none-any.whl.

File metadata

File hashes

Hashes for django_templated_email_md-2024.10.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e61cb1634940619bbc8315d92ec61afcdb002b87b343b9517af1ff3c531f8b5d
MD5 e0bc4a341125311c9a8800249ea01f52
BLAKE2b-256 07851c00eae8d2c8e1661ba1a71715b761cb3cfb88b460136564b88b87b7c289

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page