【问题标题】:Configuring django-celery-email with django-anymail使用 django-anymail 配置 django-celery-email
【发布时间】:2019-03-02 03:44:14
【问题描述】:
我正在使用 django-anymail(sendgrid) 在我的网络应用程序中发送电子邮件。我想让电子邮件以异步方式发送,而无需让用户等待一段时间。那么,如何使用 django-anymail 配置 django-celery-email。
现在,我的电子邮件配置。是:
ANYMAIL = {
"SENDGRID_API_KEY": os.environ.get('SENDGRID_API_KEY')
}
EMAIL_BACKEND = "anymail.backends.sendgrid.EmailBackend"
【问题讨论】:
标签:
django
email
sendgrid
django-celery
django-anymail
【解决方案1】:
来自 django-celery-email readme:
默认情况下 django-celery-email 将使用 Django 的内置 SMTP 电子邮件后端...如果您想使用另一个后端,您可以将其设置为 CELERY_EMAIL_BACKEND,就像您在使用之前通常设置 EMAIL_BACKEND 一样芹菜。
所以在你的 settings.py 中:
EMAIL_BACKEND = "djcelery_email.backends.CeleryEmailBackend"
CELERY_EMAIL_BACKEND = "anymail.backends.sendgrid.EmailBackend" # your setting from before
另外,请注意 django-celery-email 不知道 Anymail 的 extra sending options,例如 metadata、tags、template_id、envelope_sender 等。如果你使用其中任何一个,你需要在你的设置中让 django-celery-email 知道它们:
CELERY_EMAIL_MESSAGE_EXTRA_ATTRIBUTES = ['metadata', 'tags'] # or whatever you use
(更多信息在this issue。)