Skip to main content

Python package for sending rich e-mails.

Project description

README

Code Quality

GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status Codecov Code Style Python Python Python Python

Description

concrete-mailer is a python package for sending rich e-mails.

  • It automatically embeds the linked image in email inline attachments.
  • It avoids emails to end up in SPAM (applying best practices, with no guarantee)
  • It automatically converts rich e-mails in plain-text format for receivers who have not enabled HTML format
  • It allows sending e-mails with attachements
  • It inlines CSS (no header in HTML e-mails)

warning It requires an SMTP server.

Setup the environment

pip install concrete-mailer

User Guide

concrete-mailer can be used in two ways:

1- Email Client (client.py)

from concrete_mailer.client import EmailSenderClient
import os

#:  Define the smtp connexion variables in:
#:  SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_HOST_USER, SMTP_HOST_PASSWORD
client = EmailSenderClient(
    email_host=os.getenv('SMTP_HOST_NAME'),  #: smtp hostname
    email_port=os.getenv('SMTP_HOST_PORT'),  #: smtp host port
    email_host_user=os.getenv('SMTP_HOST_USER'),  #: smtp host username
    email_host_password=os.getenv('SMTP_HOST_PASSWORD'),  #: smtp host password
)

for name, email in (('John', 'john@mail.ext'), ('Jane', 'jane@mail.ext')):
    client.send(
        context={'name': name},
        template='''
            <h1>Concrete Mailer</h1>
            <p>Hello {{name}}. Welcome to README</p>
            <img src="/path/to/image1.jpg">
        ''',
        title='README',
        dests=[email, 'cc@netsach.org'],
        sender_name='Netsach',
        sender_email='sender@netsach.org',
        reply_to='contact@netsach.org',
        attachments=['/path/to/file.zip', '/path/to/image2.png'],
    )

send method returns:

  • True if the email is successfully sent.
  • False if a problem has occured.

2- Email preparers (preparer.py)

from concrete_mailer.utils.preparers import prepare_email
import os

#:  Define the smtp connexion variables in:
#:  SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_HOST_USER, SMTP_HOST_PASSWORD
for name, email in (('John', 'john@mail.ext'), ('Jane', 'jane@mail.ext')):
    email = prepare_email(
        context={'name': name},
        html='''
            <h1>Concrete Mailer</h1>
            <p>Hello {{name}}. Welcome to README</p>
            <img src="/path/to/image1.jpg">
        ''',
        title='README',
        css='',  #: extra css
        sender='Netsach <sender@netsach.org>',
        reply_to='contact@netsach.org',
        recipients=[email, 'cc@netsach.org'],
        attachments=['/path/to/file.zip', '/path/to/image2.png'],
        email_host=os.getenv('SMTP_HOST_NAME'),  #: smtp hostname
        email_port=os.getenv('SMTP_HOST_PORT'),  #: smtp host port
        email_host_user=os.getenv('SMTP_HOST_USER'),  #: smtp host username
        email_host_password=os.getenv('SMTP_HOST_PASSWORD'),  #: smtp host password
    )
    email.send()

send method returns:

  • True if the email is successfully sent.
  • False if a problem has occured.

Debug

An additionnal debug kwargs (False by default) can be added with the following behaviour:

  • if debug is False (default), then the client will try to establish an smtp connection and send the email with the given options.
  • if debug is True, the email body will be displayed in console instead of being sent to destinations. No stmp connection will be established (dry-run)

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

concrete-mailer-2.14.0.tar.gz (20.5 kB view hashes)

Uploaded Source

Built Distribution

concrete_mailer-2.14.0-py3-none-any.whl (21.1 kB view hashes)

Uploaded Python 3

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