Django регистрационное письмо не отправляется

Я пытался получить электронное письмо для активации учетной записи django-registration-redux для отправки новым зарегистрированным пользователям.

Я получил все части, не связанные с электронной почтой, такие как вход / выход и фактическая регистрация пользователя! Когда я регистрируюсь, он автоматически регистрируется как этот пользователь. Но я никогда не получаю письмо с кодом активации.

Я пробовал разные вещи, чтобы попытаться заставить это работать, я следовал некоторым учебникам по настройке всего этого, но электронные письма все еще не работают.

Вот некоторые настройки кода, я использую шаблоны регистрации, которые я скачал онлайн.

settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'registration',
    'synths',
)


# user reg settings
REGISTRATION_OPEN = True
ACCOUNT_ACTIVATION_DAYS = 7
REGISTRATION_AUTO_LOGIN = True

LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/login/'

# i tried including this line but still nothing
# EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

# email
# first i tried setting up the debbuging server with this CMD line
# python -m smtpd -n -c DebuggingServer localhost:1025
# i dont know if it worked!, i got no errors but the cursor just
# sat there blinking at me! i was expecting some output to tell me
# the server had started
# these were the settings i used for that

EMAIL_HOST = '127.0.0.1'
EMAIL_PORT = 1025
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''

# then i tried using my own address and smtp.live.com

EMAIL_HOST = 'smtp.live.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'myemailaddress@hotmail.com'
EMAIL_HOST_PASSWORD = '123123abcabc'

# still nothing

я пропускаю какие-либо важные настройки здесь?

urls.py

# included amongst my other urls
(r'^accounts/', include('registration.backends.simple.urls')),

Кажется, все в порядке с учебниками и документацией. Как я уже сказал, регистрация работает отлично, за исключением писем.

Я заметил одну вещь: у вас, вероятно, не должно быть auto loggin = True, если вы хотите, чтобы пользователь активировал свои учетные записи, но комментирование этой строки ничего не изменило, но я все равно вошел в систему автоматически после регистрации. Похоже на несовершеннолетнего в стороне, но, возможно, это как-то связано с неработающими письмами?

Я не знаю, я потерян с этим. Либо мне не хватает некоторых настроек, код не работает, python smtpd не работает, или мои настройки smtp.live.com неверны!

любые благодарности приветствуются!

РЕДАКТИРОВАТЬ: при попытке электронной почты "сбросить пароль" я получаю эту ошибку

SMTPException at /accounts/password/reset/

SMTP AUTH extension not supported by server.

Request Method:     POST
Request URL:        http://localhost:8000/accounts/password/reset/
Django Version:     1.7.6
Exception Type:     SMTPException
Exception Value:    SMTP AUTH extension not supported by server.

Exception Location: C:\Python34\lib\smtplib.py in login, line 613
Python Executable:  C:\Python34\python.exe
Python Version:     3.4.3

РЕДАКТИРОВАТЬ 2: используя эти настройки, я получаю страницу с паролем / сбросом / выполнением, но не получаю реальную электронную почту

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

EMAIL_HOST = '127.0.0.1'
EMAIL_PORT = 1025

4 ответа

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

будет отображать только электронную почту на консоли.

Вместо этого вы должны использовать

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

Более того, удобнее использовать существующий SMTP-сервер, такой как Gmail.

Для этого вам нужно добавить их в файл настроек django

EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'                                                                             
EMAIL_HOST ='smtp.gmail.com'                                   
EMAIL_PORT = 587                                                             
EMAIL_HOST_USER = 'youruser@gmail.com'                              
EMAIL_HOST_PASSWORD = 'gmail app password' #This is not your gmail password.
EMAIL_USE_TLS = True

Дополнительную помощь по паролю можно найти здесь

Вы можете попробовать добавить DEFAULT_FROM_EMAIL установка и настройка этих настроек:

EMAIL_USE_TLS = True
EMAIL_USE_SSL = True

Это позволит Django использовать безопасную электронную почту.

Проверьте файл urls.py и убедитесь, что вы используете hmac, а не просто

urlpatterns = [
    #...    
    url(r'^accounts/', include('registration.backends.hmac.urls')),
]

Также, в вашем setting.py, INSTALLED_APPS, убедитесь, что "регистрация" перед django.contrib.auth.

INSTALLED_APPS = [
    #.....
    'registration',
    'django.contrib.auth',
    #...
]

Я знаю, что это старый вопрос, но я подумал, что это поможет любому, кто ищет ответ. Вы настроили свой urlconf для использования одношаговой регистрации. Ниже приведен фрагмент из их документов -

Рабочий процесс этого бэкэнда преднамеренно максимально прост:

  1. Пользователь регистрируется, заполнив регистрационную форму.
  2. Учетная запись пользователя создана и активна немедленно, без промежуточного подтверждения или шага активации.
  3. Новый пользователь залогинен сразу.

Если вы хотите видеть электронные письма в консоли, используйте вместо этого следующий urlconf -

url(r'^account/', include('registration.backends.default.urls')),

Надеюсь, это поможет.

Другие вопросы по тегам