django-email-queue 0.23.0
Queening and storing EMAIL_BACKEND for django.
Keywords: django-email-queue

==================
Django email queue
==================

Queening and storing EMAIL_BACKEND for django.


.. image:: https://img.shields.io/pypi/v/django-email-queue.svg
        :target: https://pypi.python.org/pypi/django-email-queue

.. image:: https://img.shields.io/travis/wooyek/django-email-queue.svg
        :target: https://travis-ci.org/wooyek/django-email-queue

.. image:: https://readthedocs.org/projects/django-email-queue/badge/?version=latest
        :target: https://django-email-queue.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status
.. image:: https://coveralls.io/repos/github/wooyek/django-email-queue/badge.svg?branch=develop
        :target: https://coveralls.io/github/wooyek/django-email-queue?branch=develop
        :alt: Coveralls.io coverage

.. image:: https://codecov.io/gh/wooyek/django-email-queue/branch/develop/graph/badge.svg
        :target: https://codecov.io/gh/wooyek/django-email-queue
        :alt: CodeCov coverage

.. image:: https://api.codeclimate.com/v1/badges/0e7992f6259bc7fd1a1a/maintainability
        :target: https://codeclimate.com/github/wooyek/django-email-queue/maintainability
        :alt: Maintainability

.. image:: https://img.shields.io/github/license/wooyek/django-email-queue.svg
        :target: https://github.com/wooyek/django-email-queue/blob/develop/LICENSE
        :alt: License

.. image:: https://img.shields.io/twitter/url/https/github.com/wooyek/django-email-queue.svg?style=social
        :target: https://twitter.com/intent/tweet?text=Wow:&url=https://github.com/wooyek/django-email-queue
        :alt: Tweet about this project

.. image:: https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg
        :target: https://saythanks.io/to/wooyek


* Free software: GNU Affero General Public License v3
* Documentation: https://django-email-queue.readthedocs.io.

No change in django send_messages usage to get message storing
--------------------------------------------------------------

You don't have to change the way you send messages, this app will plugin into the usual django plumbing.

This way all the email send though django EMAIL_BACKEND will get stored for auditing.


No overhead infrastructure
--------------------------

You don't have to setup overhead infrastructure (e.g. celery, redis and rabbitmq) just to send emails
asynchronously. You can use a simple worker that will send queued emails.

When you get big and having a MQ and all that is a good choice, all you have to to is set
EMAIL_QUEUE_EMAIL_BACKEND to 'djcelery_email.backends.CeleryEmailBackend'.
This way you get message storing for auditing and will use pro setup for asynchronously ran tasks.

Quickstart
----------


Install Django email queue::

    pip install django-email-queue

This is a plugin replacement for your current EMAIL_BACKEND. You'll still use it to send actual messages,
but before them they'll get stored and queued in models visible from admin panel.

.. code:: python

    EMAIL_BACKEND = 'django_email_queue.backends.EmailBackend'
    EMAIL_QUEUE_EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

    INSTALLED_APPS = [
        ...
        'django_email_queue.apps.DjangoEmailQueueConfig',
    ]

Now you have a few options to setup queue processing

1. Run  `django_email_queue.worker` from terminal to continuously send emails:

.. code:: bash

    python -m django_email_queue.worker

Set EMAIL_QUEUE_SLEEP_TIME to number of settings to sleep between runs.

2. Run django command to process queue and exit:

.. code:: bash

    python manage.py send_queued_messages

3. Manually from django admin for :

.. image:: https://django-email-queue.readthedocs.io/en/latest/_static/Admin-bulk-send.png
    :alt: Deploy Django Opt-out example project to Heroku


Running Tests
-------------

Does the code actually work?

::

    $ pipenv install --dev
    $ pipenv shell
    $ tox


We recommend using pipenv_ but a legacy approach to creating virtualenv and installing requirements should also work.
Please install `requirements/development.txt` to setup virtual env for testing and development.


Credits
-------

This package was created with Cookiecutter_ and the `wooyek/cookiecutter-django-app`_ project template.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`wooyek/cookiecutter-django-app`: https://github.com/wooyek/cookiecutter-django-app
.. _`pipenv`: https://docs.pipenv.org/install




History
-------

0.9.17 (2018-01-02)
+++++++++++++++++++

* First release on PyPI.