2016-10-11 35 views
1

有人可以解釋如何爲django rest auth設置電子郵件驗證嗎? 我的settings.py包含:django rest auth email validation

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 
ACCOUNT_EMAIL_VERIFICATION = 'mandatory' 
ACCOUNT_AUTHENTICATION_METHOD = 'email' 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_USERNAME_REQUIRED = False 

而且我加入這一行我urls.py:

url(r'^accounts/', include('allauth.urls')), 

但我對這個端點註冊:rest-auth/registration/,不發送電子郵件,但用戶已創建。 什麼是發送電子郵件確認的好配置?我必須擁有SMTP服務器嗎?

編輯:(後@McAbra評論)

顯然,這種設置不能發送電子郵件:

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 

只打印郵件Django的控制檯輸出。 @McAbra提供的設置效果很好。 但是在生產環境中,使用gmail發送驗證郵件是否是一種好的做法? 我只是想創建電子郵件[email protected]嗎?

編輯2:

我的另一個問題是,發送的郵件是空的。該模板在site-packages\allauth\templates\account\email中提供。郵件標題是[http://localhost:8000/],但沒有內容。我在Python控制檯中沒有錯誤。任何想法?對於這一點

解決方案:

site-packages\allauth\templates\account\email文件必須在 your-app\templates\account\email

+0

只是爲了確保:您並不期待真正的電子郵件,對吧?如果您使用的是您指定的「EMAIL_BACKEND」,則會在控制檯中打印出「電子郵件」。 – McAbra

+0

我想通過電子郵件驗證註冊。我正在尋找解決方案來設置我的配置,以向用戶發送驗證電子郵件,然後繼續驗證以激活用戶帳戶。 – Ben

+0

好吧,你確實收到了一個打印在你的控制檯上的電子郵件,但你想發送實際的電子郵件到一個真實的郵箱中? – McAbra

回答

1

被複制,您需要有一個SMTP服務器,如果你想發送的郵件實際。我喜歡使用Gmail SMTP服務器。 settings.py將是:

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
EMAIL_HOST_USER = 'gmail_username' 
EMAIL_HOST_PASSWORD = 'password from https://security.google.com/settings/security/apppasswords' 

從那裏嘗試。如果沒有幫助,我會盡力幫助。

+0

您的解決方案有效,但我必須通過簡單的gmail帳戶密碼更改EMAIL_HOST_PASSWORD。此網址:https:// security.google.com/settings/security/apppasswords'返回'「您正在查找的設置不適用於您的帳戶。」' – Ben

+0

我已經編輯了一篇簡短的問題,也許你可以在這一點上幫助我? :) – Ben

+0

是否有任何理由爲什麼它只適用於本地主機,而不是在我的服務器(具有相同的設置)? – Ben

2

我在發送電子郵件時發生問題,之後發送郵件中的鏈接。您需要明確設置帳戶確認電子郵件視圖。

下面是我在settings.py

ACCOUNT_AUTHENTICATION_METHOD = 'email' 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_USERNAME_REQUIRED = False 
ACCOUNT_EMAIL_VERIFICATION = 'mandatory' 

設置在urls.py

from allauth.account.views import confirm_email as allauthemailconfirmation 

    urlpatterns = [ 
    url(r'^api/rest-auth/account-confirm-email/(?P<key>[-:\w]+)/$',allauthemailconfirmation, 
    name='account_confirm_email'), 
    ] 

您可以使用mailcatcher.me如果您要檢查本地電子郵件。

相關問題