Python package for sending rich e-mails.
Project description
README
Code Quality
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
use_tls=os.getenv('SMTP_USE_TLS') == '1', #: smtp use tls
)
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.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
use_tls=os.getenv('SMTP_USE_TLS') == '1', #: smtp use tls
)
email.send()
send
method returns:
True
if the email is successfully sent.False
if a problem has occured.
Debug
Python standard package includes a smtpd
module.
According to the official documentation
This module offers several classes to implement SMTP (email) servers.
One of thoses classes is DebuggingServer
.
Create a new debugging server. Arguments are as per SMTPServer. Messages will be discarded, and printed on stdout.
If you want to test your emails, open a new console and invoke the following command:
python3 -m smtpd -n -c DebuggingServer localhost:1025
and configure your environment :
SMTP_HOST_NAME='localhost'
SMTP_HOST_PORT='1025'
SMTP_HOST_USER=''
SMTP_HOST_PASSWORD=''
SMTP_USE_TLS=''
The email body will be displayed in console instead of being sent to destinations. Only local stmp connection will be established (dry-run)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for concrete_mailer-2.16.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b1ee849c5185424d39d87d91daa90f3645bd39f50e8df694bbdc2ff914e339c |
|
MD5 | 793e697b0189093a9668def6cc23697f |
|
BLAKE2b-256 | 794f3354891cfd8a5912a169e0fda704c74c8a7c88744c9b07284450ef474f02 |