2012-08-14 55 views
4

因此,我在我的項目中使用django-registration,以便在我正在構建的應用程序中啓用用戶自行註冊。我已經配置django註冊發送確認電子郵件給註冊用戶。Django註冊 - 以異步方式發送電子郵件

settings.py

EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'apassword' 
... 
ACCOUNT_ACTIVATION_DAYS = 7 

但是,用戶填寫登記表並點擊註冊按鈕後,頁面一直等待郵件發送過程。它看起來只有在電子郵件發送後纔會收到回覆(確認頁面)。

我讀過另一個thread,它顯示瞭如何在一個線程中發送電子郵件。有沒有辦法使用django-registration發送電子郵件,以便在發送電子郵件之前,表單註冊提交的響應不會被阻止?我的意思是,我不想修改django-registration本身。

回答

3

您應該使用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>) 
+0

它看起來像,使用Django的梅勒,我需要在Django的註冊修改send_mail進口,我對嗎? – 2012-08-14 18:00:42

+1

是的。見https://bitbucket.org/seanoc/django-registration/src/35091bf234e9/registration/models.py「如果SEND_EMAIL: 如果settings.INSTALLED_APPS 「郵件」:從郵件進口 send_mail 其他: 從Django中。 core.mail import send_mail' – 2012-08-14 18:13:26