Как исправить ошибку SMTPAuthenticationError в Django - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь отправить письмо пользователю для активации его учетной записи при регистрации. Я использовал функцию send_mail в Django и Google stmp.

Вот мой settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'sm******e@gmail.com'
EMAIL_HOST_PASSWORD = '*******'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

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

(534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbv\n5.7.14 lY_yuZp3YjByqaX8J_3Ixrd9McIpBdalv5CzBicW4GI6_NxwD5J78C5qu4p1i1d4_CZak\n5.7.14 I7sN3nAcOy4bQa2gJw_8migeiV5qTHdLVtRIYGLr4OTQuHijuaraS4gOwlv8EqhG>\n5.7.14 Please log in via your web browser and then try again.\n5.7.14  Learn more at\n5.7.14  https://support.google.com/mail/answer/78754 qo21sm499096ejb.105 - gsmtp')

Ссылка в сообщении об ошибке больше не доступна. Кто-нибудь должен помочь, пожалуйста. Наконец, вот код моего views.py

def register(request):
    if request.method == 'POST':
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        username = request.POST['username']
        email = request.POST['email']
        password = request.POST['password']
        password2 = request.POST['password']

        if password  == password2:   
            if User.objects.filter(username=username).exists():
                messages.error(request, 'username already exists')
                return redirect('register')
            else:
                user = User.objects.create_user(first_name=first_name, last_name = last_name, username=username, email=email, 
                                                password=password)
                user.save()
                id=user.id
                subject = 'Welcome to LifeStream'
                message= '"Hi!\nHow are you?\nHere is the link to activate your account:\nhttp://127.0.0.1:8005/blog/activation/?id=%s" %(id)'
                recipient = str(user.email)
                send_mail(subject, message, EMAIL_HOST_USER, [recipient], fail_silently=False)
                return render(request,'blog/thankyou.html')

                #messages.success(request, 'Registration successful! You can now login!')
                #return redirect('login')
        else:
            messages.error(request, 'passwords do not match')
            return redirect('register')
    else:
        return render(request, 'blog/register.html')

1 Ответ

0 голосов
/ 27 мая 2020

Я внес небольшие изменения в EMAIL_BACKEND EMAIL_BACKEND = 'django .core.mail.backends.smtp.EmailBackend'

Я заменяю smtp в приведенном выше коде на консоль EMAIL_BACKEND = EMAIL_BACKEND = 'django .core.mail.backends.console.EmailBackend '

Обратите внимание, что это можно использовать только в производстве, так как электронное письмо будет отправлено на ваш терминал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...