Simple e-mail composition & decomposition
Project description
GitHub | PyPI | Documentation | Issues | Changelog
eletter provides functionality for constructing & deconstructing email.message.EmailMessage instances without having to touch the needlessly complicated EmailMessage class itself. A simple function enables composition of e-mails with text and/or HTML bodies plus attachments, and classes are provided for composing more complex multipart e-mails.
Installation
eletter requires Python 3.6 or higher. Just use pip for Python 3 (You have pip, right?) to install eletter and its dependencies:
python3 -m pip install eletter
Examples
Constructing an e-mail with the compose() function:
import eletter
TEXT = (
"Oh my beloved!\n"
"\n"
"Wilt thou dine with me on the morrow?\n"
"\n"
"We're having hot pockets.\n"
"\n"
"Love, Me\n"
)
HTML = (
"<p>Oh my beloved!</p>\n"
"<p>Wilt thou dine with me on the morrow?</p>\n"
"<p>We're having <strong>hot pockets</strong>.<p>\n"
"<p><em>Love</em>, Me</p>\n"
)
with open("hot-pocket.png", "rb") as fp:
picture = eletter.BytesAttachment(
content=fp.read(),
filename="enticement.png",
content_type="image/png",
)
msg = eletter.compose(
subject="Meet Me",
from_="me@here.qq",
to=[eletter.Address("My Dear", "my.beloved@love.love")],
text=TEXT,
html=HTML,
attachments=[picture],
)
msg can then be sent like any other EmailMessage, say, by using outgoing.
For more complex e-mails, a set of classes is provided. Here is the equivalent of the HTML-with-image e-mail with alternative plain text version from the email examples page in the Python docs:
from email.utils import make_msgid
import eletter
text = eletter.TextBody(
"Salut!\n"
"\n"
"Cela ressemble à un excellent recipie[1] déjeuner.\n"
"\n"
"[1] http://www.yummly.com/recipe/Roasted-Asparagus-Epicurious-203718\n"
"\n"
"--Pepé\n"
)
asparagus_cid = make_msgid()
html = eletter.HTMLBody(
"<html>\n"
" <head></head>\n"
" <body>\n"
" <p>Salut!</p>\n"
" <p>Cela ressemble à un excellent\n"
' <a href="http://www.yummly.com/recipe/Roasted-Asparagus-'
'Epicurious-203718">\n'
" recipie\n"
" </a> déjeuner.\n"
" </p>\n"
f' <img src="cid:{asparagus_cid[1:-1]}" />\n'
" </body>\n"
"</html>\n"
)
image = eletter.BytesAttachment.from_file(
"roasted-asparagus.jpg",
inline=True,
content_id=asparagus_cid,
)
msg = (text | (html ^ image)).compose(
subject="Ayons asperges pour le déjeuner",
from_=eletter.Address("Pepé Le Pew", "pepe@example.com"),
to=[
eletter.Address("Penelope Pussycat", "penelope@example.com"),
eletter.Address("Fabrette Pussycat", "fabrette@example.com"),
],
)
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
Built Distribution
File details
Details for the file eletter-0.5.0.tar.gz
.
File metadata
- Download URL: eletter-0.5.0.tar.gz
- Upload date:
- Size: 65.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b77831e399de3fe472b6c35c3bd1fa6c66bb799a632d42f08a19e0ff7a6bd23 |
|
MD5 | 634d086d863acc7e295dc2daae07c32a |
|
BLAKE2b-256 | 6614c40fd0af3c2b3800c81099cbc5217fd959ec6073066eb5a9850498dddcab |
File details
Details for the file eletter-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: eletter-0.5.0-py3-none-any.whl
- Upload date:
- Size: 17.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5290bca3c52c6c580549d2f795d741ad26e7e1b3ad5759a019e5c3c84696a31c |
|
MD5 | 41c483bc3c58d9b804d621fa4c19a8fe |
|
BLAKE2b-256 | 3174c0b0603438e0942c2967f5d8a5a816c88579c58f8ef297cdf2172fb0cd28 |