530, b'5.7.0 Ошибка аутентификации при использовании gmail для отправки электронных писем через django

У меня проблемы с отправкой писем через gmail в Django. Я установил пароль приложения, но не могу отправлять электронные письма через Django. Мои settings.py выглядят так

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_FROM_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'my app password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False

Насколько мне известно, это не проблема, связанная с Gmail, поскольку у меня были те же проблемы с почтой Yahoo и Sendgrid, функция, отвечающая за отправку электронной почты, выглядит следующим образом.

def send_activation_email(user, request):
    current_site = get_current_site(request)
    email_subject = "Activation Email"
    context = {"user": user, 
                "domain": current_site,
                'uid': urlsafe_base64_encode(force_bytes(user.pk)), 
                'token': generate_token.make_token(user)
                }
    email_body = render_to_string('email/activate.html',context)

    email = EmailMessage(subject=email_subject, body=email_body, from_email=settings.EMAIL_FROM_USER, to=[user.email])

    email.send()

и полное сообщение об ошибке это

SMTPSenderRefused at /register/

(530, b'5.7.0 Authentication Required. Learn more at\n5.7.0  https://support.google.com/mail/?p=WantAuthError g9-20020a170906394900b00872a726783dsm9975622eje.217 - gsmtp', '[email protected]')

Я пытался перейти на почту Yahoo и SendGrid, но там возникли те же проблемы, только с другими именами. Я также пытался изменить некоторые детали, но это не должно быть проблемой? Тем не менее, я не могу отправить электронное письмо куда угодно. Если кто-нибудь может мне помочь, я был бы очень признателен

У меня также включен IMAP

Пожалуйста, отредактируйте свой код и включите метод EmailMessage

Linda Lawton - DaImTo 01.02.2023 15:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема заключалась в том, что я использовал EMAIL_FROM_USER вместо EMAIL_HOST_USER, поэтому мне нужно было изменить код на этот

settings.py

...
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'my app password'
...

views.py

...
email = EmailMessage(subject=email_subject, body=email_body, from_email=settings.EMAIL_HOST_USER, to=[user.email])
...

Это потому, что без EMAIL_HOST_USER Django не будет пытаться аутентифицироваться.

Другие вопросы по теме