В конце концов я не использовал электронную почту django-celery. Без этого пакета легко отправлять электронные письма, созданные приложением django-allauth.
Я использовал эти ресурсы -
https://github.com/anymail/django-anymail/issues/79
https://docs.djangoproject.com/en/2.2/topics/email/#defining-a-custom-email-backend
В основном вы делаете это, чтобы заставить его работать.
В файле settings.py определите CustomEmailBackend -
EMAIL_BACKEND = "users.backends.CustomEmailBackend"
В файле backend.py определите бэкэнд -
from django.core.mail.backends.base import BaseEmailBackend
from .tasks import async_send_messages
class CustomEmailBackend(BaseEmailBackend):
def send_messages(self, email_messages):
async_send_messages.delay(email_messages)
return len(email_messages)
И это задача -
from django.core.mail import get_connection
from abstract_base_user.celery import app
@app.task(rety_backoff=True, serializer="pickle")
def async_send_messages(email_messages):
conn = get_connection(backend='anymail.backends.mailgun.EmailBackend')
conn.send_messages(email_messages)
Приложение celery django должно быть настроено стандартным способом, как определено в https://docs.celeryproject.org/en/latest/django/first-steps-with-django.html
И настройки сельдерея в settings.py должны включать тип содержимого pickle -
CELERY_ACCEPT_CONTENT = ['json', 'pickle']
Очевидно, что вам нужно включить ваши настройки в любое время и настройки брокера. Но этого должно быть достаточно, чтобы кто-нибудь начал.