Skip to main content

Simple HTML e-mail generator

Project description

EMailBuilder

Simple HTML e-mail template builder python library. Allows for embedded images and matplotlib charts.

Table of Contents


Installation

You can install the latest release with pip:

pip install emailbuilder

Or build and install the development version yourself:

git clone https://github.com/coheleth/emailbuilder &&\
pip install ./emailbuilder

Usage

Import EmailBuilder:

import emailbuilder as eb

Create an emailbuilder.EMail object and append elements to it:

# Create eb.EMail object
# (see the "EMail class" section for more details)
email = eb.EMail(
    "EMail Subject",
    "sender@example.com",
    "receiver@example.com"
)

#  Append components to the eb.EMail object
# (see the "Components" section for more details)
email.append(eb.Header("Hello World!"))
email.append(eb.Paragraph("Lorem ipsum dolor sit amet consectetur"))

You can also append matplotlib figures:

plt.figure()
plt.plot([1, 2])
plt.title("Example")

email.append(eb.Figure(plt.gcf(), "example-figure"))

Then, you can send the e-mail via your preferred method. For instance:

s = smtplib.SMTP(...)

...

s.send_message(email.message())
s.quit()

The EMail Class/Object

This object is used for setting the information relating to the e-mail, and provides methods to render the e-mail contents.

Attributes

Subject

The e-mail's subject, as a string

Sender

The sender's e-mail, as a string

Receiver, Copy and Blind Copy

The receiver(s)'s e-mail(s), as either a string or a list

Style

A dictionary containing the basic style rules for the e-mail. (More information concerning styling to be added)

Methods

email.append()

email.append(component)

Appends a component to the end of the e-mail

email.attach()

with open("file.png", "rb") as f:
  email.attach(
      item = f.read(),
      type = "image",
      extension = "png",
      cid = "my_image",
      mime = MIMEImage(f.read()) # Optional
  )

Adds an attachment to the e-mail.

email.html()

print(email.html())

Returns the e-mail as HTML.

email.plain() (W.I.P.)

print(email.plain())

Returns the e-mail as plain text.

email.message()

s.send_message(email.message())

Returns the e-mail as a EmailMessage object.


Components

Below are the included components in the emailbuilder library.

Basic Elements

Header

eb.Header(
    content: str,
    style: dict = {}
)

An <h1> element, with the text from the content parameter.

Paragraph

eb.Paragraph(
    content: str,
    style: dict = {}
)

A single paragraph, with the text from the content parameter.

Embedabbles

Image

eb.Image(
    src: str,
    alt: str = "",
    cid: str = <file name>,
    style: dict = {}
)

An embedded image, loaded from the src path. Alternative text, used for text-only e-mails is passed through the alt parameter.

ImageRaw

eb.ImageRaw(
    image: bytes,
    extension: str,
    alt: str = "",
    cid: str = <hashed bytes>,
    style: dict = {}
)

An embedded image, loaded as bytes from the image parameter. An image format must be provided through the extension parameter.

Figure

eb.Figure(
    figure: matplotlib figure,
    alt: str,
    style: dict = {},
    kwargs: dict = {}
)

An embedded MatPlotLib figure. Custom arguments for the savefig function can be passed through the kwargs parameter.

Containers

Container

eb.Container(
    style: dict = {}
)

A <div> element. Items can be appended with the append(item) method, just like with the EMail object.


To-Do

  • Write basic usage guide
  • Add win32com.client outlook support
  • Improve classes and functions documentation
  • Add CC and BCC
  • Add table component
  • Document style argument
  • Improve plain text function

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

emailbuilder-0.1.4.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

emailbuilder-0.1.4-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file emailbuilder-0.1.4.tar.gz.

File metadata

  • Download URL: emailbuilder-0.1.4.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for emailbuilder-0.1.4.tar.gz
Algorithm Hash digest
SHA256 073270c8159e9cb01b19510e22f36d2f12a0aa2da99d0da688406c8f8c9aebb2
MD5 8993ef3a092f2107e7cb9f3a9d11bbde
BLAKE2b-256 b01980e4b01ec78a43c5c78d1712a691d61e39102dcf2a44d94aab52abd2c202

See more details on using hashes here.

File details

Details for the file emailbuilder-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: emailbuilder-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for emailbuilder-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 31bdf83f00e111ff07558023b4b06aa2e193ce3c8ce1e8b45263c66350248d78
MD5 7bafa2342520b6929381c4763cb2caae
BLAKE2b-256 514e4f9dcbb83c641b4b8a89451554d3d2379cc24a7dd4449e76597574cb3d40

See more details on using hashes here.

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