Django SMTPAuthenticationError

Я новичок в django и занимаюсь разработкой веб-приложения с использованием django. Я успешно настроил функцию регистрации с помощью Userena в своем веб-приложении и могу зарегистрироваться как пользователь с подтверждением по электронной почте. Я могу показать вам мои настройки SMTP в моем файле settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '[email protected]'
DEFAULT_FROM_EMAIL = '[email protected]'
SERVER_EMAIL = '[email protected]'
EMAIL_HOST_PASSWORD = '**************'

все было хорошо, прежде чем я изменил свой EMAIL_HOST_PASSWORD

Фактически, по какой-то причине я должен изменить предыдущий пароль этого SERVER_EMAIL ([email protected]). Я уже отредактировал EMAIL_HOST_PASSWORD в соответствии с новым паролем SERVER_EMAIL.

но теперь, если я хочу зарегистрироваться в качестве нового пользователя, я сталкиваюсь со следующей ошибкой

SMTPAuthenticationError at /accounts/signup/
(534, '5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvNq\n5.7.14 S3l1pFXENupDa_SdPphNHrnzeLPUOyf6O0l1s31w7h_UARx11P89AxPeeZ6xBi2KeQRjsw\n5.7.14 nvpxZhPVv771W9ljEDyeWnqpqv3_nakuPo36BEl3IlYj9qVujNB5cm0TYFf9LQAxRjFdda\n5.7.14 xh-y5spA9zIQONDsvRRgN3e0DXoIkgxTO3Mu75IaACi-XlvFtFfPBiQ81gUrBZ_PhZsBmh\n5.7.14 ajsSf-flNEmoSydyOTNdmwdB0__8> Please log in via your web browser and\n5.7.14 then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 40sm12125121qgi.47 - gsmtp')

Ответ 1

Относительно недавнее изменение в системе аутентификации Google означает, что вам нужно будет "разрешить доступ к защищенным приложениям" в свою учетную запись Google, чтобы это работало.

В вашей ошибке вы рекомендуете посетить эту ссылку: https://support.google.com/mail/answer/78754

На этой странице:

Шаг # 2 попросит вас попробовать Отображение блокировки для блокировки

В шаге №3 объясняется, как разрешить доступ менее защищенного приложения. Вкратце:

Перейдите в Разрешить менее безопасные приложения и выберите "Разрешить", чтобы менее защищенные приложения могли получать доступ к вашей учетной записи Google. Мы не рекомендуем этот вариант, так как это может облегчить кому-то доступ к вашей учетной записи.

Ответ 3

Это сработало для меня:

Сначала я создал email_info.py в той же папке, что и settings.py:

from .email_info import *

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'your_pass'
EMAIL_PORT = 587

Затем в settings.py я добавил:

from .email_info import *

EMAIL_USE_TLS = EMAIL_USE_TLS
EMAIL_HOST = EMAIL_HOST
EMAIL_HOST_USER = EMAIL_HOST_USER
EMAIL_HOST_PASSWORD = EMAIL_HOST_PASSWORD
EMAIL_PORT = EMAIL_PORT

И, наконец, в views.py:

from django.conf import settings
from django.core.mail import send_mail

send_mail(subject, message, from_email, to_list, fail_silently=Tre)

Вот видео на YouTube, объясняющее этот процесс: https://www.youtube.com/watch?v=51mmqf5a0Ss

Ответ 4

Я думаю, вам нужно включить Google менее безопасные приложения. Войдите в свою учетную запись и перейдите в менее безопасные приложения, чтобы изменить настройки. Это не хорошо, но вы можете попробовать свой код.

Ответ 5

Если вы уже разрешили доступ к менее защищенным приложениям и все еще имеете проблемы, перейдите в свою учетную запись → login и security → уведомления и действия на своих устройствах и посмотрите, есть ли устройство, пытающееся получить доступ, и Google отклонил его, разрешить доступ.

Ответ 6

Последние протоколы безопасности Google не позволят вам отправлять сообщения через менее безопасные приложения.

Итак, исправление:

Включите менее безопасные приложения.

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

  1. Включите двухфакторную аутентификацию вашей учетной записи Gmail. Ссылка, чтобы включить его.

  2. Затем создайте пароль приложения для своей учетной записи Gmail из Google. Это будет 16-значный код. Поместите его в settings.py или _credentials.py с помощью: EMAIL_HOST_PASSWORD = 'sixt eend igit code'

И БИНГО! Проблема будет решена.

Примечание. Пароль приложения можно создать, только если для вашей учетной записи включена двухфакторная аутентификация.

Ответ 7

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

Перейдите на https://accounts.google.com/DisplayUnlockCaptcha и разрешите доступ к своей учетной записи Google, нажав "Продолжить", а затем попробуйте снова сбросить пароль в Django.

Ответ 8

Убедитесь, что вы выбрали опцию "Включить" в разделе "Разрешить менее безопасные приложения" (https://www.google.com/settings/security/lesssecureapps). Я предлагаю вам обновить страницу один раз после выбора переключателя "Включить". Выбор переключателя не должен перемещаться "Отключить"

Некоторые способы получения "Отключить" автоматически.