Получение ошибки SSL при отправке почты через Django

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)

Вот что я вижу, когда отправляю почту через Django.

Это моя конфигурация электронной почты в settings.py

# Email Settings
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_HOST_USER = "xxxxxxxx@gmail.com"
EMAIL_HOST_PASSWORD = "xxxxxxxxxxxxx"
EMAIL_USE_TLS = True

вот как я отправляю почту

    send_mail(
        "Subject",
        "Test message",
        settings.EMAIL_HOST_USER,
        ["xxxxxxxxx@gmail.com"],
        fail_silently=False,
    )

Это сообщение об ошибке указывает на то, что существует проблема с SSL-сертификатом, используемым для отправки электронной почты. Одна из возможных причин этой ошибки заключается в том, что используемый сертификат не является сертификатом от доверенного эмитента или что он устарел. Для устранения этой проблемы может потребоваться обновление сертификата или настройка приложения на использование другого сертификата. Кроме того, убедитесь, что отправляющему адресу электронной почты разрешен доступ к менее безопасным приложениям.

также вы можете отправить электронную почту, сделав это

    from django.core.mail import EmailMultiAlternatives
    subject, from_email, to = emailSubject, '<your_gmail@gmail.com>', ["where you 
     want to send"]
    msg = EmailMultiAlternatives(subject, from_email, to)
    msg.send()

Я использовал Django 4.2 и Python 3.10, столкнувшись с той же проблемой. Понижение версии Django до 4.1.7 помогло мне. Надеюсь, это поможет

То же самое. Понизил версию и все заработало.

В версии Django 4.2 изменилась конфигурация по умолчанию, подробности и обходной путь смотрите здесь.

Если вы столкнулись с проблемами совместимости или ошибками при использовании Django 4.2 с Python 3.10, вы можете рассмотреть возможность понижения версии Django до совместимой версии. Вот более подробные шаги по понижению версии Django:

  1. Определите совместимую версию Django: Определите версию Django, совместимую с Python 3.10. Вы можете обратиться к документации проекта Django, примечаниям к выпуску или матрице совместимости, чтобы найти рекомендуемую версию Django для Python 3.10.

  2. Обновите версию Django в файле requirements.txt: Откройте файл requirements.txt в корневом каталоге вашего проекта Django. Найдите строку, указывающую версию Django, которая может выглядеть как Django==4.2. Замените номер версии на совместимую версию Django. Например, если Django 4.1.7 совместим, строку следует изменить на Django==4.1.7.

  3. Сохраните изменения: Сохраните обновленный requirements.txt файл.

  4. Установите совместимую версию Django: Откройте терминал или командную строку и перейдите в каталог вашего проекта Django. Выполните следующую команду для установки совместимой версии Django:

    pip install -r requirements.txt --upgrade
    

    Эта команда установит указанную версию Django и ее зависимости.

  5. Проверка версии Django: После завершения установки вы можете проверить, что Django был понижен до совместимой версии, выполнив следующую команду:

    python -m django --version

    Эта команда отобразит текущую установленную версию Django, которая должна совпадать с пониженной версией, указанной в requirements.txt.

Следуя этим шагам, вы сможете успешно понизить версию Django до совместимой и решить все проблемы совместимости с Python 3.10. Важно отметить, что понижение версии Django может повлиять на некоторые возможности или функционал, доступные в более новых версиях, поэтому не забудьте тщательно протестировать ваше приложение после понижения.

Установка собранных пакетов: Django Попытка деинсталляции: Django Найдена существующая установка: Django 4.2.2 Деинсталляция Django-4.2.2: Успешная деинсталляция Django-4.2.2 Успешно установлена Django-4.1.7

python3 -m django --version

4.1.7

pip install -r requirements.txt --upgrade

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