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.1.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.1-py3-none-any.whl (42.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for emails-1.1.1.tar.gz
Algorithm Hash digest
SHA256 f2ac9d73d84e83d7f1a3924837fa15b59c0bce9bf658ac3b0b80398bc6d8b57d
MD5 cd68817e6273f1ec68777f80aad57814
BLAKE2b-256 47a5d5472729b4b56d3868776aef9b43b0803048cc53f8999f1a0f1b4d05c360

See more details on using hashes here.

Provenance

The following attestation bundles were made for emails-1.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: emails-1.1.1-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.7

File hashes

Hashes for emails-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 927079dc5c8aec755d017171510c78c0ba56a9f5bf47b0ea82b785f700b43469
MD5 42a74f9cbf1cb218556da36c5e8bfff6
BLAKE2b-256 3260fe7f7e4240446400a1cd3358d38887132e34c1abdfdb457ce5acfd108090

See more details on using hashes here.

Provenance

The following attestation bundles were made for emails-1.1.1-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