Django oscar send_email result in ValueError: EMAIL_USE_TLS/EMAIL_USE_SSL являются взаимоисключающими,

Эта функция вызывает ошибку, которая не имеет смысла для меня:

File "/venv/virtualenvs/ZHR-f7z/oscar/apps/communication/utils.py", line 128, in send_email_messages
email.send()

в настройках:

EMAIL_USE_SSL = None #False doesn't change result
EMAIL_USE_TLS = None

Происходит неправильное позиционирование, так как оба значения None, поэтому они не могут быть True:

File "/venv/virtualenvs/ZHR-f7z/lib/python3.9/site-packages/django/core/mail/backends/smtp.py", line 31, in __init__
        self.use_ssl = settings.EMAIL_USE_SSL if use_ssl is None else use_ssl
        self.timeout = settings.EMAIL_TIMEOUT if timeout is None else timeout
        self.ssl_keyfile = settings.EMAIL_SSL_KEYFILE if ssl_keyfile is None else ssl_keyfile
        self.ssl_certfile = settings.EMAIL_SSL_CERTFILE if ssl_certfile is None else ssl_certfile
        if self.use_ssl and self.use_tls:
            raise ValueError(
                "EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive, so only set "
                "one of those settings to True.")
        self.connection = None
        self._lock = threading.RLock()



[console ready]
>>> use_ssl
>>> self.use_ssl
'None'
>>> self.use_tls
'None'
>>> 

Если я запускаю оболочку с:

>>> from django.core import mail
>>> mail.send_mail(
...             'Subject here', 'Here is the message.',
...             'mailfrom', ['mailto'],
...             fail_silently=False,
...         )

приводит к успеху.

Какой-нибудь совет, поскольку параметры оба ложные и ValueError должен срабатывать, если оба параметра истинны?

Спасибо, BR

EMAIL_USE_TLS и EMAIL_USE_SSL являются взаимоисключающими. Вы должны выбрать, какое безопасное соединение использовать, в зависимости от вашего поставщика услуг электронной почты.

В Django EMAIL_USE_TLS использует порт 587 по умолчанию, а EMAIL_USE_SSL использует порт 465 вместо этого

Таким образом, правильная настройка должна быть

EMAIL_USE_SSL = False
EMAIL_USE_TLS = True

или

EMAIL_USE_SSL = True
EMAIL_USE_TLS = False

смотрите Django Doc о настройках EMAIL_USE_TLS/EMAIL_USE_SSL

enter image description here

Я немного запутался, TLS - True, а SSL - False, условие для запуска ValueErrror означает:

if self.use_ssl==True and self.use_tls == True 

Я бы ожидал, что для срабатывания исключения необходимы оба значения True. Но здесь исключение срабатывает, пока только одно из них True.

Или я упускаю что-то еще?

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