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 включена двухэтапная проверка:

  1. перейдите в настройки безопасности своего аккаунта Google

  2. перейдите к разделу "Двухэтапная проверка"

  3. нажмите на опцию "Пароли приложений"

  4. укажите название приложения, а затем нажмите "Создать", чтобы сгенерировать 16-значный пароль

  5. немедленно скопируйте его (он больше не будет отображаться)

  6. используйте этот пароль в 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_PASSWORDEMAIL_HOST_PASSWORD

Используйте правильную комбинацию портов и протоколов

Убедитесь, что пароль приложения принадлежит той же учетной записи

Вернуться на верх