2010-05-24 3 views
8

Мне любопытно, есть ли способ отправить активированную электронную почту с именем пользователя, паролем, используя django-registration. Сначала я подумал об изменении формы регистрации, но мне нужен пример.отправить активировать электронную почту с django-registration

+0

НЕ посылайте пароли пользователей по электронной почте. –

ответ

11

django-registration использует следующий код, внутренне, для обработки отправки электронной почты:

send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.user.email]) 

Если вы хотите работать, вы должны указать DEFAULT_FROM_EMAIL значения в вашем settings.py.

Кроме того, обратите внимание на следующее:

почта отправляется с использованием SMTP хост и порт, указанный в EMAIL_HOST и настройки EMAIL_PORT. Настройки EMAIL_HOST_USER и EMAIL_HOST_PASSWORD, если установлено, используются для проверки подлинности на сервере SMTP , и настройка EMAIL_USE_TLS управления используется ли защищенное соединение .

Таким образом, чтобы дать пример, вот что я использовал в файле settings.py для использования учетной записи Gmail:

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 465 
EMAIL_USE_TLS = True 

EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'my_emails_password' 

django-registration должны затем иметь возможность отправлять сообщения электронной почты.

+6

И, как раз для записи, всем, кто настраивает электронную почту - ** не делайте ошибку, я делал, используя кавычки вокруг порта, как в 'EMAIL_PORT = '587''. Это стоило мне нескольких часов отладки ... –

+0

благодаря вашему чае, я дважды проверил мою ошибочную конфигурацию электронной почты - только чтобы обнаружить, что 4 строки после настройки с помощью учетной записи gmail, я установил ее для какой-то чужих локальных учетных записей ! Проблема? Решаемые. – bharal

+2

Я думаю, мы должны использовать 'EMAIL_PORT = 587', когда' EMAIL_USE_TLS = True' –

3

EMAIL_PORT = 465 работал год назад. Теперь вам нужно использовать порт 587 с gmail. Причина: Django не поддерживает SMTP с SSL с самого начала. Поддерживается только команда STARTTLS ПОСЛЕ ПОЛЬЗОВАТЕЛЬСКОГО ПОЛЬЗОВАТЕЛЯ. Gmail, однако, больше не поддерживает эту опцию на порту 465.

1

Надеюсь, это поможет кому-то. После устранения неполадок в течение получаса, я понял, что я должен был явно указать это, а также при использовании Джанго-регистрации -

EMAIL_BACKEND = «django.core.mail.backends.smtp.EmailBackend»

0

django-register-activate реализован аналогичная функциональность, как django-регистрация. В основном он предоставляет код для регистрации пользователя, проверки и активации электронной почты, входа пользователя и выхода пользователя.

Если вам нужны примеры для реализации собственного кода, вы можете проверить views.py и forms.py в register_activate, чтобы получить некоторые подсказки.

Надеюсь, что ответ поможет. Дайте мне знать, если у вас возникнут дополнительные вопросы.