Skip to main content

Add a short description here!

Project description

GitHub Actions status | sdras/awesome-actions [codecov]

template-mailer

A simple python client for sending mass emails from html templates.

Description

The template-mailer lets you fill variables in html-templates and send the populated content via email. It makes use of the jinja2 templating langauge (Reference).

Usage

Provide your html-template as a string to the render_template-method:

>>> from template_mailer import render_template
>>> template = "<html> foo: {{ variable }} </html>"
>>> data = {"variable": "bar"}
>>> render_template(template, data)
'<html> foo: bar </html>'

Use the SMTPClient to send the rendered template as html-email with the SMTPClient:

>>> from template_mailer import SMTPClient
>>> smtp_client = SMTPClient()
>>> smtp_client.send("targetemailalldress@test.test", "subject", "message")

By default the client will look for the following environment variables:

SMTP_HOST, SMTP_PORT (starttls), EMAIL_USER (your email address), EMAIL_PASSWORD

You can provide the SMTP configurations in plain form as well:

>>> smtp_client = SMTPClient("smtp.gmail.com", 587, "your_email@gmail.coim", "your_password")

Options

Encryption

The default email encryption is TLS. An SSL option is not yet provided and will be part of a future release.

Missing data

The render_template method will throw an error if you don't provide enough data to populate all template-variables:

>>> from template_mailer import render_template
>>> template = "<html> foo: {{ variable }} ham: {{ second_variable }} </html>"
>>> data = {"variable": "bar"}
>>> render_template(template, data)
Traceback (most recent call last):
...
jinja2.exceptions.UndefinedError: 'second_variable' is undefined

To change this policy you can provide the option undefined="allow" to the render_template-method:

>>> from template_mailer import render_template
>>> template = "<html> foo: {{ variable }} ham: {{ second_variable }} </html>"
>>> data = {"variable": "bar"}
>>> render_template(template, data, undefined="allow")
'<html> foo: bar ham:  </html>'

Logging

By default the SMTPClient uses the root-logger with log-level INFO. You can inject your own logger into the client:

>>> from template_mailer import SMTPClient
>>> import logging
>>> some_logger = logging.getLogger("demo")
>>> smtp_client = SMTPClient(logger=some_logger)

Note

This project has been set up using PyScaffold 3.2.3. For details and usage information on PyScaffold see https://pyscaffold.org/.

Project details


Download files

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

Files for template-mailer, version 0.2.0
Filename, size File type Python version Upload date Hashes
Filename, size template_mailer-0.2.0-py2.py3-none-any.whl (5.1 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes

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 DigiCert DigiCert EV certificate StatusPage StatusPage Status page