Welcome to Drymail’s documentation!


Makes sending emails easy and DRY — For Python 3.

PyPI version

Drymail is a minimalist wrapper over Python’s existing smtplib and email libraries, designed to be friendly but unrestrictive. Here’s how you might send a simple email with an attachment using drymail.

from drymail import SMTPMailer, Message

client = SMTPMailer(host='smtp.email.com', user='johndoe', password='password', tls=True)
message = Message(subject='Congrats on the new job!', sender=('John Doe', 'john@email.com'),
                  receivers=[('Jane Doe', 'jane@message.com'), 'jane.doe@mail.io'], text='When is the party? ;)')
message.attach(filename='/path/to/congrats.pdf', mimetype='application/pdf')



  • Supports creating email with HTML content, plaintext content, or both!
  • Supports mentioning contacts in the “John Doe" <john@email.com> format.
  • Support standard headers like CC, BCC, Reply-To and Authors.
  • Supports injecting custom headers.
  • Supports adding attachments.
  • And most importantly — the library being minimalist, it doesn’t restrict you in any way like some of the most fancier email frameworks do.


Install drymail by running —

$ pip3 install drymail


Documentation is available at https://drymail.readthedocs.io/


  • Test suite.
  • Restructure the Message class to handle dynamic prepare.


All kinds of contribution are welcome.


This project is licensed under the MIT license.

The API Documentation

If you are looking for information on a specific function, class, or method, this part of the documentation is for you.

Indices and tables