Metadata-Version: 2.1
Name: template-mailer
Version: 0.2.0
Summary: Add a short description here!
Home-page: https://github.com/plysytsya/template-mailer
Author: Pavlo Lysytsya
Author-email: pavlo.lysytsya@outfittery.de
License: mit
Project-URL: Documentation, https://github.com/plysytsya/template-mailer
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Description-Content-Type: text/markdown; charset=UTF-8
Provides-Extra: testing
Requires-Dist: pytest ; extra == 'testing'
Requires-Dist: pytest-cov ; extra == 'testing'

![GitHub Actions status | sdras/awesome-actions](https://github.com/plysytsya/template-mailer/workflows/CI/badge.svg)
[![codecov](https://codecov.io/gh/plysytsya/template-mailer/branch/master/graph/badge.svg)]

# 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](https://jinja.palletsprojects.com/en/2.10.x/)).

## 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/.


