2015-04-24 41 views
3

我正在使用Django-allauth並通過Amazon SES發送電子郵件。我希望所有帳戶都能在他們登錄之前驗證他們的電子郵件,但電子郵件驗證發送似乎無聲無息。我查看了源代碼,我發現我應該設置DEFAULT_FROM_EMAIL,但它仍然不起作用。如何找出爲什麼django-allauth不發送確認電子郵件?

這是我的配置,以防萬一我忘記了任何明顯的東西。我將django-smtp-ssl安裝爲電子郵件後端。非常感謝您的幫助!

# E-mail 

EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend' 
EMAIL_HOST = 'email-smtp.us-west-2.amazonaws.com' 
EMAIL_HOST_USER = os.environ['EMAIL_USER'] 
EMAIL_HOST_PASSWORD = os.environ['EMAIL_PASSWORD'] 
EMAIL_PORT = 465 
EMAIL_USE_TLS = True 
DEFAULT_FROM_EMAIL = 'Verified-email <[email protected]>' 

# Auth 

ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_EMAIL_VERIFICATION = 'mandatory' 
SOCIALACCOUNT_EMAIL_VERIFICATION = True 
ACCOUNT_AUTHENTICATION_METHOD = 'username_email' 
+0

變化'''EMAIL_BACKEND'''來'''「django.core.mail.backends.console.EmailBackend'''',所以你會看到,如果電子郵件是發送或不是。如果是發送,則會被SES阻止。 –

+1

發送電子郵件不僅僅是從SMTP服務器上發送郵件。我寫了一些需要注意的事項(DKIM,SPF,反彈處理,PTR等)https://github.com/fmalina/emails。我在FlatmateRooms上使用allauth這個代碼,現在使其具有通用性並且可配置爲開放源代碼。 –

+0

我嘗試過使用其他適配器,但沒有運氣。我將嘗試在django-allauth代碼中設置一些斷點並查看正在發生的事情。 SES還提到已發送0封電子郵件,所以我認爲錯誤在我身邊。 我會保持更新,感謝您的輸入! –

回答

1

終於找到了我失蹤的東西。

在我註冊的看法,我增加了一個行:

from allauth.account.utils import complete_signup 
from allauth.account import app_settings 
# some other code 
def signup(request): 
    if request.method == 'POST': 
     form = UserCreateForm(request.POST) 
     if form.is_valid(): 
      user = form.save(request) 
      # Added this! 
      complete_signup(request, user,app_settings.EMAIL_VERIFICATION, "/") 
      # etc... 
0

DEFAULT_FROM_EMAIL應該是EMAIL_HOST一個有效的地址。

你也可以驗證它如下。

$ python manage.py shell 
Python 2.7.9 (default, Jun 29 2016, 13:08:31) 
[GCC 4.9.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> from django.conf import settings 
>>> settings.EMAIL_BACKEND 
'django.core.mail.backends.smtp.EmailBackend' 
>>> from django.core.mail import send_mail 
>>> send_mail('test message', 'this is a test message', settings.DEFAULT_FROM_EMAIL, ['[email protected]']) 
1 
>>> 
相關問題