Проблема с отправкой электронного письма с подтверждением учетной записи от Django.
Я пытаюсь отправить электронное письмо с активацией учетной записи из приложения на основе Django REST и через две службы электронной почты, Gmail и Mailgun, используя Heroku для развертывания приложения. У меня нет проблем с функцией регистрации пользователя с помощью
"django.core.mail.backends.console.EmailBackend",
У меня возникли проблемы при использовании почтового сервера
"django.core.mail.backends.smtp.EmailBackend"
со следующими настройками:
from environs import Env
env = Env()
env.read_env()
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_PORT = env('MAILGUN_SMTP_PORT')
EMAIL_HOST_USER = env('MAILGUN_SMTP_LOGIN')
EMAIL_HOST_PASSWORD = env('MAILGUN_SMTP_PASSWORD')
В моей тестовой системе я получаю следующее:
web_1 | Traceback (most recent call last):
web_1 | File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
web_1 | response = get_response(request)
web_1 | File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
web_1 | response = wrapped_callback(request, *callback_args, **callback_kwargs)
web_1 | File "/usr/local/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
web_1 | return view_func(*args, **kwargs)
web_1 | File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 69, in view
web_1 | return self.dispatch(request, *args, **kwargs)
web_1 | File "/usr/local/lib/python3.8/site-packages/django/utils/decorators.py", line 43, in _wrapper
web_1 | return bound_method(*args, **kwargs)
web_1 | File "/usr/local/lib/python3.8/site-packages/django/views/decorators/debug.py", line 90, in sensitive_post_parameters_wrapper
web_1 | return view(request, *args, **kwargs)
web_1 | File "/usr/local/lib/python3.8/site-packages/dj_rest_auth/registration/views.py", line 47, in dispatch
web_1 | return super().dispatch(*args, **kwargs)
web_1 | File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 509, in dispatch
web_1 | response = self.handle_exception(exc)
web_1 | File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 469, in handle_exception
web_1 | self.raise_uncaught_exception(exc)
web_1 | File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
web_1 | raise exc
web_1 | File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 506, in dispatch
web_1 | response = handler(request, *args, **kwargs)
web_1 | File "/usr/local/lib/python3.8/site-packages/rest_framework/generics.py", line 190, in post
web_1 | return self.create(request, *args, **kwargs)
web_1 | File "/usr/local/lib/python3.8/site-packages/dj_rest_auth/registration/views.py", line 69, in create
web_1 | user = self.perform_create(serializer)
web_1 | File "/usr/local/lib/python3.8/site-packages/dj_rest_auth/registration/views.py", line 95, in perform_create
web_1 | complete_signup(
web_1 | File "/usr/local/lib/python3.8/site-packages/allauth/account/utils.py", line 209, in complete_signup
web_1 | return perform_login(
web_1 | File "/usr/local/lib/python3.8/site-packages/allauth/account/utils.py", line 172, in perform_login
web_1 | send_email_confirmation(request, user, signup=signup, email=email)
web_1 | File "/usr/local/lib/python3.8/site-packages/allauth/account/utils.py", line 346, in send_email_confirmation
web_1 | email_address.send_confirmation(request, signup=signup)
web_1 | File "/usr/local/lib/python3.8/site-packages/allauth/account/models.py", line 62, in send_confirmation
web_1 | confirmation.send(request, signup=signup)
web_1 | File "/usr/local/lib/python3.8/site-packages/allauth/account/models.py", line 169, in send
web_1 | get_adapter(request).send_confirmation_mail(request, self, signup)
web_1 | File "/usr/local/lib/python3.8/site-packages/allauth/account/adapter.py", line 464, in send_confirmation_mail
web_1 | self.send_mail(email_template, emailconfirmation.email_address.email, ctx)
web_1 | File "/code/backend/adapter.py", line 11, in send_mail
web_1 | msg.send()
web_1 | File "/usr/local/lib/python3.8/site-packages/django/core/mail/message.py", line 284, in send
web_1 | return self.get_connection(fail_silently).send_messages([self])
web_1 | File "/usr/local/lib/python3.8/site-packages/django/core/mail/backends/smtp.py", line 102, in send_messages
web_1 | new_conn_created = self.open()
web_1 | File "/usr/local/lib/python3.8/site-packages/django/core/mail/backends/smtp.py", line 69, in open
web_1 | self.connection.login(self.username, self.password)
web_1 | File "/usr/local/lib/python3.8/smtplib.py", line 748, in login
web_1 | raise last_exception
web_1 | File "/usr/local/lib/python3.8/smtplib.py", line 737, in login
web_1 | (code, resp) = self.auth(
web_1 | File "/usr/local/lib/python3.8/smtplib.py", line 660, in auth
web_1 | raise SMTPAuthenticationError(code, resp)
web_1 | smtplib.SMTPAuthenticationError: (534, b'5.7.9 Application-specific password required. Learn more at\n5.7.9 https://support.google.com/mail/?p=InvalidSecondFactor s189-20020a372cc6000000b007429961e15csm8481890qkh.118 - gsmtp')
web_1 | [20/Mar/2023 19:52:52] "POST /api/v1/dj-rest-auth/registration/ HTTP/1.1" 500 17631