Django Yubin
============
Django Yubin allows you to create, send and manage emails in your Django projects. It follows the
`12-factors app methodology `_.
How it works
------------
For creating and composing emails, Yubin provides class-based views that use standard Django
templates.
For sending and queuing emails, Yubin replaces the standard Django Email Backend with its own.
Instead of sending emails synchronously trough a SMTP server, Yubin saves emails in your database
(and optionally in a file storage) and sends them asynchronously using the
`Celery `_ distributed task queue.
Advantages
----------
* Create and compose emails reusing your code easily with class-based views.
* Your app can respond requests faster because other process/worker is managing the connection with
the SMTP server for sending emails.
* Scale out easily adding more Celery workers.
* Emails are saved in the database, you can see, manage and enqueue them from the Django Admin.
* Yubin provides settings to avoid sending emails during development.
It's a fork!
------------
Yubin was forked from a django-mailer-2 fork which is a fork form Chris Beaven's fork of James
Tauber's `django-mailer `_.
History
^^^^^^^
Chris Beaven started a fork of django-mailer and it got to the point when it would be rather
difficult to merge back. The fork was then renamed to the completely unimaginative
"django mailer 2".
At `APSL `_, we were always using this project together with
`mailviews `_, so we joined both together and started
to add our own features.
Differences
^^^^^^^^^^^
Some of the larger differences in django yubin:
* It's integrated with django-mailviews classes.
* It saves a rendered version of the email, so HTML and other attachments are handled fine.
* This rendered emails can be saved in diferent sotrages: database, file system, AWS S3 or even
your own custom storage.
* Models have been completely refactored for a better logical separation of data.
* Provides replacements for ``send_mail``, ``mail_admins`` and ``mail_managers`` Django functions.
* Uses Celery distributed task queue instead of Cron.
* Task to remove old emails so the database does not increase so much.
* Improved admin configuration.
* Added a demo project for development and to see it in action in the admin.
* Support for runing tests without having to install and configure a Django application.
* Added CI and code coverage.
* Added a health check view.
Credit
------
At the time of the fork, the primary authors of django-mailer were James Tauber and Brian Rosner.
Additional contributors include Michael Trier, Doug Napoleone and Jannis Leidel.
Original branch and the django-mailer-2 hard work comes from Chris Beaven.
django-mailviews from Disqus.
The name "Yubin" was suggested by `@morenosan `_, he says it means
"postal mail" in Japanesse, but who knows! :)
For Yubin contributors, have a look at
`Github's contributor's list `_ and
`humans.txt `_.
Index
-----
.. toctree::
:maxdepth: 2
install
mailviews
queue
storages
settings
contributing
changelog