Django получает 530, требуется аутентификация 5.7.0, несмотря на использование паролей приложений Google
У меня есть 2fa в Google, я создал пароль, указав правильный адрес электронной почты и пароль от приложения в поле settings.py, но все равно получаю ошибку аутентификации. Пробовал и 587 (TLS=True), и 465 (SSL=True), но, похоже, ничего не изменилось.
settings.py:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465
EMAIL_USE_TLS = False
EMAIL_USE_SSL = True
EMAIL_HOST_USER = 'mygmail@gmail.com'
EMAIL_PASSWORD = "my16digitpassword"
DEFAULT_FROM_EMAIL = 'mygmail@gmail.com'
В чем может быть проблема/решение? В любых ответах на эту проблему есть функция "используйте пароль приложения Google".
from django.shortcuts import render, get_object_or_404, redirect
from .models import Post
from .forms import PostForm
def Home(request, id=None):
if id:
post = get_object_or_404(Post, id=id)
else:
post = None
if request.method == "POST":
if "delete" in request.POST:
post = get_object_or_404(Post, id= request.POST.get("delete"))
post.delete()
return redirect("home")
form = PostForm(request.POST, instance=post)
if form.is_valid():
form.save()
return redirect("home")
else:
form = PostForm(instance=post)
posts = Post.objects.all()
return render(request, "blog/home.html", {"form": form, "posts": posts})
Для этого вам потребуется пароль от приложения.
Если для вашего аккаунта Google включена двухэтапная проверка:
перейдите в настройки безопасности своего аккаунта Google
перейдите к разделу "Двухэтапная проверка"
нажмите на опцию "Пароли приложений"
укажите название приложения, а затем нажмите "Создать", чтобы сгенерировать 16-значный пароль
немедленно скопируйте его (он больше не будет отображаться)
используйте этот пароль в
EMAIL_HOST_PASSWORD
Вы можете протестировать отправку электронных писем с помощью gmail за пределами django с помощью этого скрипта:
import smtplib
from email.mime.text import MIMEText
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = "mygmail@gmail.com"
EMAIL_HOST_PASSWORD = "my16digitpassword"
DEFAULT_FROM_EMAIL = "mygmail@gmail.com"
server = smtplib.SMTP_SSL(EMAIL_HOST, EMAIL_PORT)
server.login(EMAIL_HOST_USER, EMAIL_HOST_PASSWORD)
msg = MIMEText("TEST")
msg['Subject'] = "TEST"
msg['From'] = DEFAULT_FROM_EMAIL
server.sendmail(DEFAULT_FROM_EMAIL, "test@example.com", msg.as_string())
Изменить EMAIL_PASSWORD ➜ EMAIL_HOST_PASSWORD
Используйте правильную комбинацию портов и протоколов
Убедитесь, что пароль приложения принадлежит той же учетной записи