530, b'5.7.0 Ошибка Authentication Required при использовании gmail для отправки писем через django
У меня проблемы с отправкой писем через gmail в Django. Я установил пароль приложения, но не могу отправить электронную почту через Django. Мой settings.py выглядит следующим образом
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_FROM_USER = 'ianis.donica@gmail.com'
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', 'ianis.donica@gmail.com')
Что я пробовал, так это переходить на почту yahoo и SendGrid, но там возникли те же проблемы, только с другими именами. Я также попробовал изменить некоторые детали, но это не должно быть проблемой? И все же я не могу отправить электронное письмо куда-либо. Если кто-нибудь может мне помочь, я буду очень признателен
У меня также включен IMAP
Проблема была в том, что я использовал EMAIL_FROM_USER вместо EMAIL_HOST_USER, поэтому мне нужно было изменить код на следующий
settings.py
...
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'ianis.donica@gmail.com'
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 не будет пытаться аутентифицироваться