Skip to main content

Modern python library for emails.

Project description

PyPI version Python versions Test status Documentation status License

Build, transform, and send emails in Python with a high-level API.

python-emails helps you compose HTML and plain-text messages, attach files, embed inline images, render templates, apply HTML transformations, sign with DKIM, and send through SMTP without hand-building MIME trees.

Why python-emails

  • A concise API over email and smtplib

  • HTML and plain-text messages in one object

  • File attachments and inline images

  • CSS inlining, image embedding, and HTML cleanup

  • Jinja2, Mako, and string template support

  • DKIM signing

  • Loaders for URLs, HTML files, directories, ZIP archives, and RFC 822 messages

  • SMTP sending with SSL/TLS support

  • Async sending via aiosmtplib

Quick Example

import emails

message = emails.html(
    subject="Your receipt",
    html="<p>Hello!</p><p>Your payment was received.</p>",
    mail_from=("Billing", "billing@example.com"),
)
message.attach(filename="receipt.pdf", data=open("receipt.pdf", "rb"))

response = message.send(
    to="customer@example.com",
    smtp={
        "host": "smtp.example.com",
        "port": 587,
        "tls": True,
        "user": "billing@example.com",
        "password": "app-password",
    },
)
assert response.status_code == 250

Installation

Install the lightweight core:

pip install emails

Install HTML transformation features such as CSS inlining, image embedding, and loading from URLs or files:

pip install "emails[html]"

Install Jinja2 template support for the JinjaTemplate class:

pip install "emails[jinja]"

Install async SMTP sending support for send_async():

pip install "emails[async]"

Common Tasks

What You Get

  • Message composition for HTML, plain text, headers, CC/BCC, and Reply-To

  • Attachments, inline images, and MIME generation

  • Template rendering in html, text, and subject

  • HTML transformations through message.transform()

  • SMTP delivery through config dicts or reusable backend objects

  • Django integration via DjangoMessage

  • Flask integration via flask-emails

When To Use It

Use python-emails when you need more than a minimal plain-text SMTP call: HTML emails, attachments, inline images, template rendering, DKIM, message loading from external sources, or a cleaner API than hand-written email.mime code.

If you only need to send a very small plain-text message and want zero dependencies, the standard library may be enough.

Documentation

Project Status

python-emails is production/stable software and currently supports Python 3.10 through 3.14.

Contributing

Issues and pull requests are welcome.

License

Apache 2.0. See LICENSE.

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

emails-1.1.2.tar.gz (37.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

emails-1.1.2-py3-none-any.whl (42.9 kB view details)

Uploaded Python 3

File details

Details for the file emails-1.1.2.tar.gz.

File metadata

  • Download URL: emails-1.1.2.tar.gz
  • Upload date:
  • Size: 37.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for emails-1.1.2.tar.gz
Algorithm Hash digest
SHA256 9fd216b691704b3df9ad70073fc85945ba4e8eac80198233919cfa2488af8665
MD5 69989ff023d0c593f8171bda5324634c
BLAKE2b-256 25bb073e0244a4da617a1e7add93779e3a40ec173a36ff81b396450d73313f33

See more details on using hashes here.

Provenance

The following attestation bundles were made for emails-1.1.2.tar.gz:

Publisher: python-publish.yml on lavr/python-emails

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file emails-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: emails-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 42.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for emails-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0ab991876921eeac13039d5be93192ab27da1600afa7d7ea6d51dfa7cd006eda
MD5 c9a2f02ce5cf9513a61868d863a53e75
BLAKE2b-256 bb7ad64aea2f1bd6838fed3131460394c0d9d67c016a3fa1b45ef861a83310bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for emails-1.1.2-py3-none-any.whl:

Publisher: python-publish.yml on lavr/python-emails

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page