1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
|
Metadata-Version: 1.1
Name: django-celery-email
Version: 3.0.0
Summary: An async Django email backend using celery
Home-page: https://github.com/pmclanahan/django-celery-email
Author: Paul McLanahan
Author-email: paul@mclanahan.net
License: BSD
Description: ==========================================================
django-celery-email - A Celery-backed Django Email Backend
==========================================================
.. image:: https://img.shields.io/travis/pmclanahan/django-celery-email/master.svg
:target: https://travis-ci.org/pmclanahan/django-celery-email
.. image:: https://img.shields.io/pypi/v/django-celery-email.svg
:target: https://pypi.python.org/pypi/django-celery-email
A `Django`_ email backend that uses a `Celery`_ queue for out-of-band sending
of the messages.
.. _`Celery`: http://celeryproject.org/
.. _`Django`: http://www.djangoproject.org/
.. warning::
This version requires the following versions:
* Python >= 3.5
* Django 2.2, and 3.0
* Celery 4.0
Using django-celery-email
=========================
To enable ``django-celery-email`` for your project you need to add ``djcelery_email`` to
``INSTALLED_APPS``::
INSTALLED_APPS += ("djcelery_email",)
You must then set ``django-celery-email`` as your ``EMAIL_BACKEND``::
EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
By default ``django-celery-email`` will use Django's builtin ``SMTP`` email backend
for the actual sending of the mail. If you'd like to use another backend, you
may set it in ``CELERY_EMAIL_BACKEND`` just like you would normally have set
``EMAIL_BACKEND`` before you were using Celery. In fact, the normal installation
procedure will most likely be to get your email working using only Django, then
change ``EMAIL_BACKEND`` to ``CELERY_EMAIL_BACKEND``, and then add the new
``EMAIL_BACKEND`` setting from above.
Mass email are sent in chunks of size ``CELERY_EMAIL_CHUNK_SIZE`` (defaults to 10).
If you need to set any of the settings (attributes) you'd normally be able to set on a
`Celery Task`_ class had you written it yourself, you may specify them in a ``dict``
in the ``CELERY_EMAIL_TASK_CONFIG`` setting::
CELERY_EMAIL_TASK_CONFIG = {
'queue' : 'email',
'rate_limit' : '50/m', # * CELERY_EMAIL_CHUNK_SIZE (default: 10)
...
}
There are some default settings. Unless you specify otherwise, the equivalent of the
following settings will apply::
CELERY_EMAIL_TASK_CONFIG = {
'name': 'djcelery_email_send',
'ignore_result': True,
}
After this setup is complete, and you have a working Celery install, sending
email will work exactly like it did before, except that the sending will be
handled by your Celery workers::
from django.core import mail
emails = (
('Hey Man', "I'm The Dude! So that's what you call me.", 'dude@aol.com', ['mr@lebowski.com']),
('Dammit Walter', "Let's go bowlin'.", 'dude@aol.com', ['wsobchak@vfw.org']),
)
results = mail.send_mass_mail(emails)
``results`` will be a list of celery `AsyncResult`_ objects that you may ignore, or use to check the
status of the email delivery task, or even wait for it to complete if want. You have to enable a result
backend and set ``ignore_result`` to ``False`` in ``CELERY_EMAIL_TASK_CONFIG`` if you want to use these.
You should also set ``CELERY_EMAIL_CHUNK_SIZE = 1`` in settings if you are concerned about task status
and results.
See the `Celery docs`_ for more info.
``len(results)`` will be the number of emails you attempted to send divided by CELERY_EMAIL_CHUNK_SIZE, and is in no way a reflection on the success or failure
of their delivery.
.. _`Celery Task`: http://celery.readthedocs.org/en/latest/userguide/tasks.html#basics
.. _`Celery docs`: http://celery.readthedocs.org/en/latest/userguide/tasks.html#task-states
.. _`AsyncResult`: http://celery.readthedocs.org/en/latest/reference/celery.result.html#celery.result.AsyncResult
Changelog
=========
3.0.0 - 2019.12.10
------------------
* Support for Django 3.0
* Support for Python 3.8
* Droppped support for Django 1.x, Django 2.0 and Django 2.1
* Droppped support for Python 2.7
2.0.2 - 2019.05.29
------------------
* Reduce memory usage by running email_to_dict on chunks. Thanks `Paul Brown`_.
* Simplify dict_to_email for readability and efficiency. Thanks `Paul Brown`_.
* Update test matrix for supported versions of Django, Celery and Python. Thanks `James`_.
.. _Paul Brown: https://github.com/pawl
.. _James: https://github.com/jmsmkn
2.0.1 - 2018.18.27
------------------
* Fix bug preventing sending text/* encoded mime attachments. Thanks `Cesar Canassa`_.
.. _Cesar Canassa: https://github.com/canassa
2.0 - 2017.07.10
----------------
* Support for Django 1.11 and Celery 4.0
* Dropped support for Celery 2.x and 3.x
* Dropped support for Python 3.3
1.1.5 - 2016.07.20
------------------
* Support extra email attributes via CELERY_EMAIL_MESSAGE_EXTRA_ATTRIBUTES setting
* Updated version requirements in README
1.1.4 - 2016.01.19
------------------
* Support sending email with embedded images. Thanks `Georg Zimmer`_.
* Document CELERY_EMAIL_CHUNK_SIZE. Thanks `Jonas Haag`_.
* Add exception handling to email backend connection. Thanks `Tom`_.
.. _Georg Zimmer: https://github.com/georgmzimmer
.. _Tom: https://github.com/tomleo
1.1.3 - 2015.11.06
------------------
* Support setting celery.base from string. Thanks `Matthew Jacobi`_.
* Use six for py2/3 string compatibility. Thanks `Matthew Jacobi`_.
* Pass content_subtype back in for retries. Thanks `Mark Joshua Tan`_.
* Rework how tests work, add tox, rework travis-ci matrix.
* Use six from django.utils.
* Release a universal wheel.
.. _Matthew Jacobi: https://github.com/oppianmatt
.. _Mark Joshua Tan: https://github.com/mark-tan
1.1.2 - 2015.07.06
------------------
* Fix for HTML-only emails. Thanks `gnarvaja`_.
.. _gnarvaja: https://github.com/gnarvaja
1.1.1 - 2015.03.20
------------------
* Fix for backward compatibility of task kwarg handling - Thanks `Jeremy Thurgood`_.
.. _Jeremy Thurgood: https://github.com/jerith
1.1.0 - 2015.03.06
------------------
* New PyPI release rolling up 1.0.5 changes and some cleanup.
* More backward compatability in task. Will still accept message objects and lists of message objects.
* Thanks again to everyone who contributed to 1.0.5.
1.0.5 - 2014.08.24
------------------
* Django 1.6 support, Travis CI testing, chunked sending & more - thanks `Jonas Haag`_.
* HTML email support - thanks `Andres Riancho`_.
* Support for JSON transit for Celery, sponsored by `DigiACTive`_.
* Drop support for Django 1.2.
.. _`Jonas Haag`: https://github.com/jonashaag
.. _`Andres Riancho`: https://github.com/andresriancho
.. _`DigiACTive`: https://github.com/digiactive
1.0.4 - 2013.10.12
------------------
* Add Django 1.5.2 and Python 3 support.
* Thanks to `Stefan Wehrmeyer`_ for the contribution.
.. _`Stefan Wehrmeyer`: https://github.com/stefanw
1.0.3 - 2012.03.06
------------------
* Backend will now pass any kwargs with which it is initialized to the
email sending backend.
* Thanks to `Fedor Tyurin`_ for the contribution.
.. _`Fedor Tyurin`: https://bitbucket.org/ftyurin
1.0.2 - 2012.02.21
------------------
* Task and backend now accept kwargs that can be used in signal handlers.
* Task now returns the result from the email sending backend.
* Thanks to `Yehonatan Daniv`_ for these changes.
.. _`Yehonatan Daniv`: https://bitbucket.org/ydaniv
1.0.1 - 2011.10.06
------------------
* Fixed a bug that resulted in tasks that were throwing errors reporting success.
* If there is an exception thrown by the sending email backend, the result of the task will
now be this exception.
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Django
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: POSIX
Classifier: Topic :: Communications
Classifier: Topic :: Communications :: Email
Classifier: Topic :: System :: Distributed Computing
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|