Skip to main content

Elegant and simple email library for python 2/3

Project description

Emails without pain for python.

What can you do:

Create message:

import emails
message = emails.html(html=open('letter.html'),
                      subject='Friday party',
                      mail_from=('Company Team', 'contact@mycompany.com'))

Attach files or inline images:

message.attach( data=open('event.ics'), filename='Event.ics' )
message.attach( data=open('image.png'), filename='image.png', content_disposition='inline' )

Add DKIM easily:

message.dkim( key=open('my.key'), domain='mycompany.com', selector='newsletter' )

Templating:

from emails.template import JinjaTemplate as T

message = emails.html(subject=T('Payment Receipt No.{{no}}'),
                      html=T('<p>Dear {{account}} owner! This is a receipt for your subscription...'),
                      mail_from=('ABC', 'robot@mycompany.com'))

message.send(to=('John Braun', 'jbraun@gmail.com'), render={'account': 'lavr', 'no':'141051906163'} )

Send without pain and (even) get response:

SMTP = { 'host':'smtp.mycompany.com', 'port': 465, 'ssl': True }
r = messages.send(to=('John Braun', 'jbraun@gmail.com'), smtp=SMTP)
assert r.status_code == 250

One more thing

Library ships with fairy email-from-html loader. Design email with less pain or even let designers make design:

import emails
URL = 'http://_youproject_.github.io/newsletter/2013-08-14/index.html'
page = emails.loader.from_url(URL, css_inline=True, make_links_absolute=True)
message = emails.html(html=page.html, ...)
for mail_to in _get_maillist():
    message.send(to=mail_to)

Install

Install from pypi:

$ [sudo] pip install emails

Install on Ubuntu from PPA:

$ [sudo] add-apt-repository ppa:lavrme/python-emails-ppa
$ [sudo] apt-get update
$ [sudo] apt-get install python-emails

Features

  • Internationalization & Unicode bodies

  • DKIM signatures

  • HTML page loader & CSS inliner

  • Body and attachments http import

  • Body & headers preprocessors

TODO

  • Python3 (almost done)

  • Add “safety stuff” from django (done)

  • Django integration (django.core.mail.backends.smtp.EmailBackend subclass)

  • Flask extension

  • Documentation

  • 100% test coverage

  • More accurate smtp session handling

  • Some patches for pydkim performance (i.e. preload key once, not each time)

  • More genius css inliner

  • Catch all bugs

  • ESP integration: Amazon SES, SendGrid, …

  • deb package (ubuntu package done)

  • rpm package

How to Help

Library is under development and contributions are welcome!

  1. Open an issue to start a discussion around a bug or a feature.

  2. Fork the repository on GitHub and start making your changes to a new branch.

  3. Write a test which shows that the bug was fixed.

  4. Send a pull request. Make sure to add yourself to AUTHORS.

Background

Library inspired by excellent python-requests and werkzeug library. Some code is from my mailcube.ru experience.

https://travis-ci.org/lavr/python-emails.png?branch=master

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-0.1.12.tar.gz (63.5 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page