Пожалуйста, как мне исправить эту ошибку SMTPConnectError?

Я пытаюсь отправить электронное письмо пользователю, чтобы подтвердить его/ее учетную запись с помощью ссылки активации, однако при попытке зарегистрировать пользователя я получаю приведенную ниже ошибку. Я пробовал использовать метод send_mail, но он по-прежнему выдает ту же ошибку. Пожалуйста, любая помощь будет очень признательна.

Моя ошибка

Traceback (most recent call last):
  File "C:\Users\Donald\PycharmProjects\to_doApp\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\Donald\PycharmProjects\to_doApp\venv\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Donald\PycharmProjects\to_doApp\venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\Donald\PycharmProjects\to_doApp\store\accounts\views.py", line 44, in register
    send_email.send()
  File "C:\Users\Donald\PycharmProjects\to_doApp\venv\lib\site-packages\django\core\mail\message.py", line 284, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "C:\Users\Donald\PycharmProjects\to_doApp\venv\lib\site-packages\django\core\mail\backends\smtp.py", line 102, in send_messages
    new_conn_created = self.open()
  File "C:\Users\Donald\PycharmProjects\to_doApp\venv\lib\site-packages\django\core\mail\backends\smtp.py", line 62, in open
    self.connection = self.connection_class(self.host, self.port, **connection_params)
  File "C:\Users\Donald\AppData\Local\Programs\Python\Python39\lib\smtplib.py", line 258, in __init__
    raise SMTPConnectError(code, msg)

Exception Type: SMTPConnectError at /accounts/register/
Exception Value: (421, b'service not available (connection refused, too many connections)')


Мой views.py

@csrf_exempt
def register(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']
            phone_number = form.cleaned_data['phone_number']
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            username = email.split('@')[0]
            user = Account.objects.create_user(first_name=first_name, last_name=last_name, email=email, username=username, password=password)
            user.phone_number = phone_number

            #  USER ACTIVATION WITH TOKEN TO EMAIL ACCOUNT
            current_site = get_current_site(request)
            mail_subject = 'Activate your account'
            message = render_to_string('accounts/verification_email.html', {
                'user': user,
                'domain': current_site,
                'uid': urlsafe_base64_encode(force_bytes(user.pk)),  # Encode the users primary key
                'token': default_token_generator.make_token(user),
            })
            to_email = email
            send_email = EmailMessage(mail_subject, message, to=[to_email])
            send_email.send()
            user.save()
            messages.success(request, 'Registration Successful')
            return redirect('register')
    else:
        form = RegistrationForm()

    context = {'form': form}
    return render(request, 'accounts/register.html', context)


Мой settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'my-email'
EMAIL_HOST_PASSWORD = 'my-password'
EMAIL_USE_TLS = True

Я предполагаю, что вы используете для этого почту gmail. Похоже, что Google не рекомендует разработчикам делать массовые рассылки с аккаунтов gmail, поэтому я не удивлюсь, если вы получаете ошибки. Gmail неизбежно запретит вам делать это, если вы будете использовать его слишком часто.

Я бы рекомендовал попробовать такой сервис, как MailJet или SendInBlue, который предназначен для транзакционной рассылки электронной почты и имеет гораздо лучшую поддержку и протоколирование ошибок для этой цели. По крайней мере, это поможет вам сузить круг проблем до провайдера.

Я рекомендую http://www.sendinblue.com - его быстро настроить, и у меня была отличная служба поддержки. Это стоит того, чтобы иметь у них бесплатный личный тестовый аккаунт для диагностики подобных проблем.

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