Django-registration - 异步发送电子邮件

6
所以,我在我的项目中使用django-registration来启用用户自注册。我已经配置了django-registration向注册用户发送确认电子邮件。
我的settings.py:
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'myUser@myCompany.com'
EMAIL_HOST_PASSWORD = 'apassword'
...
ACCOUNT_ACTIVATION_DAYS = 7

然而,当用户填写注册表格并点击注册按钮后,页面会一直等待邮件发送过程。看起来只有在邮件发送后才收到响应(确认页面)。

我已经阅读了另一个线程,展示了如何在线程中发送电子邮件。是否有一种方法可以使用django-registration发送电子邮件,以便表单注册提交的响应不会被阻止,直到电子邮件被发送?我的意思是,我不想修改django-registration本身。

1个回答

4
你应该使用Django Mailer来排队发送电子邮件。
或者,您可以使用Celery with Django将电子邮件排队到SMTP服务器,或使用Amazon SES
from registration.signals import user_activated, user_registered

user_registered.connect(<Hook your add email to celery task queue> )

似乎我需要修改django-registration中的send_mail导入才能使用Django Mailer,我是对的吗? - Valdir Stumm Junior
1
是的。请参阅 https://bitbucket.org/seanoc/django-registration/src/35091bf234e9/registration/models.py 'if send_email: if "mailer" in settings.INSTALLED_APPS: from mailer import send_mail else: from django.core.mail import send_mail' - Pratik Mandrekar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接