Почему мое приложение django не может отправить электронное письмо зарегистрированному пользователю? - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь отправить пользователю электронное письмо, содержащее ссылку для приглашения / подтверждения. Команда propmt показывает, что электронная почта отправляется, но пользователь не получает никакой электронной почты. Я использую свою учетную запись gmail, а также разрешаю доступ менее защищенным приложениям на моем компьютере.учетная запись?Какие могут быть возможные ошибки?Вот мой файл настроек: -

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

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'someone@gmail.com'
EMAIL_HOST_PASSWORD = 'password'

DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

, в то время как мой взгляд на это выглядит следующим образом: -

@csrf_protect
def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.is_active = False
            user.save()
            current_site = get_current_site(request)
            mail_subject = 'Activate your blog account.'
            message = render_to_string('acc_active_email.html', {
            'user': user,
            'domain': current_site.domain,
            'uid':urlsafe_base64_encode(force_bytes(user.pk)).decode(),
            'token':account_activation_token.make_token(user),
        })
            to_email = form.cleaned_data.get('email')
            email = EmailMessage(
                    mail_subject, message, to=[to_email]
        )
            email.send()
            return JsonResponse({'success':True})
   else:
        form=SignupForm()
    return JsonResponse({'errors': [(k, v[0]) for k, v in form.errors.items()]})

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

enter image description here

1 Ответ

1 голос
/ 21 марта 2019

Виновником является эта строка вашей конфигурации:

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

Из документации по Django console.EmailBackend

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


Если вы хотите отправлять реальные письма, выберите подходящий бэкэнд. Поскольку вы, похоже, пытаетесь использовать smtp, вы, скорее всего, захотите использовать django smtp.EmailBackend следующим образом:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...