Fixed #23461 -- Added EMAIL_TIMEOUT setting
This commit is contained in:
parent
0ae79014c0
commit
5472d18e31
|
@ -196,6 +196,7 @@ EMAIL_USE_TLS = False
|
|||
EMAIL_USE_SSL = False
|
||||
EMAIL_SSL_CERTFILE = None
|
||||
EMAIL_SSL_KEYFILE = None
|
||||
EMAIL_TIMEOUT = None
|
||||
|
||||
# List of strings representing installed apps.
|
||||
INSTALLED_APPS = ()
|
||||
|
|
|
@ -24,7 +24,7 @@ class EmailBackend(BaseEmailBackend):
|
|||
self.password = settings.EMAIL_HOST_PASSWORD if password is None else password
|
||||
self.use_tls = settings.EMAIL_USE_TLS if use_tls is None else use_tls
|
||||
self.use_ssl = settings.EMAIL_USE_SSL if use_ssl is None else use_ssl
|
||||
self.timeout = timeout
|
||||
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:
|
||||
|
|
|
@ -1266,6 +1266,18 @@ connection. Please refer to the documentation of Python's
|
|||
:func:`python:ssl.wrap_socket` function for details on how the certificate chain
|
||||
file and private key file are handled.
|
||||
|
||||
.. setting:: EMAIL_TIMEOUT
|
||||
|
||||
EMAIL_TIMEOUT
|
||||
-------------
|
||||
|
||||
.. versionadded:: 1.8
|
||||
|
||||
Default: ``None``
|
||||
|
||||
Specifies a timeout in seconds for blocking operations like the connection
|
||||
attempt.
|
||||
|
||||
.. setting:: FILE_CHARSET
|
||||
|
||||
FILE_CHARSET
|
||||
|
@ -3089,6 +3101,7 @@ Email
|
|||
* :setting:`EMAIL_SSL_CERTFILE`
|
||||
* :setting:`EMAIL_SSL_KEYFILE`
|
||||
* :setting:`EMAIL_SUBJECT_PREFIX`
|
||||
* :setting*`EMAIL_TIMEOUT`
|
||||
* :setting:`EMAIL_USE_TLS`
|
||||
* :setting:`MANAGERS`
|
||||
* :setting:`SERVER_EMAIL`
|
||||
|
|
|
@ -154,6 +154,9 @@ Email
|
|||
authentication with the :setting:`EMAIL_SSL_CERTFILE` and
|
||||
:setting:`EMAIL_SSL_KEYFILE` settings.
|
||||
|
||||
* The SMTP :class:`~django.core.mail.backends.smtp.EmailBackend` now supports
|
||||
setting the ``timeout`` parameter with the :setting:`EMAIL_TIMEOUT` setting.
|
||||
|
||||
File Storage
|
||||
^^^^^^^^^^^^
|
||||
|
||||
|
|
|
@ -451,41 +451,27 @@ SMTP backend
|
|||
The server address and authentication credentials are set in the
|
||||
:setting:`EMAIL_HOST`, :setting:`EMAIL_PORT`, :setting:`EMAIL_HOST_USER`,
|
||||
:setting:`EMAIL_HOST_PASSWORD`, :setting:`EMAIL_USE_TLS`,
|
||||
:setting:`EMAIL_USE_SSL`, :setting:`EMAIL_SSL_CERTFILE` and
|
||||
:setting:`EMAIL_SSL_KEYFILE` settings in your settings file.
|
||||
:setting:`EMAIL_USE_SSL`, :setting:`EMAIL_TIMEOUT`,
|
||||
:setting:`EMAIL_SSL_CERTFILE` and :setting:`EMAIL_SSL_KEYFILE` settings
|
||||
in your settings file.
|
||||
|
||||
The SMTP backend is the default configuration inherited by Django. If you
|
||||
want to specify it explicitly, put the following in your settings::
|
||||
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
|
||||
Here is an attribute which doesn't have a corresponding setting like the
|
||||
others described above:
|
||||
.. versionadded:: 1.7
|
||||
|
||||
.. attribute:: timeout
|
||||
|
||||
.. versionadded:: 1.7
|
||||
|
||||
This backend contains a ``timeout`` parameter, which can be set with
|
||||
the following sample code::
|
||||
|
||||
from django.core.mail.backends import smtp
|
||||
|
||||
class MyEmailBackend(smtp.EmailBackend):
|
||||
def __init__(self, *args, **kwargs):
|
||||
kwargs.setdefault('timeout', 42)
|
||||
super(MyEmailBackend, self).__init__(*args, **kwargs)
|
||||
|
||||
Then point the :setting:`EMAIL_BACKEND` setting at your custom backend as
|
||||
described above.
|
||||
|
||||
If unspecified, the default ``timeout`` will be the one provided by
|
||||
:func:`socket.getdefaulttimeout()`, which defaults to ``None`` (no timeout).
|
||||
The ``timeout`` parameter was added. If unspecified, the default
|
||||
``timeout`` will be the one provided by
|
||||
:func:`socket.getdefaulttimeout()`, which defaults to ``None`` (no
|
||||
timeout).
|
||||
|
||||
.. versionchanged:: 1.8
|
||||
|
||||
The ``ssl_keyfile`` and ``ssl_certfile`` parameters and
|
||||
corresponding settings were added.
|
||||
The ``ssl_keyfile``, and ``ssl_certfile`` parameters and corresponding
|
||||
settings were added. The ability to customize ``timeout`` using
|
||||
a setting (:setting:`EMAIL_TIMEOUT`) was added.
|
||||
|
||||
.. _topic-email-console-backend:
|
||||
|
||||
|
|
|
@ -1033,3 +1033,8 @@ class SMTPBackendTests(BaseEmailBackendTests, SimpleTestCase):
|
|||
self.assertEqual(myemailbackend.timeout, 42)
|
||||
self.assertEqual(myemailbackend.connection.timeout, 42)
|
||||
myemailbackend.close()
|
||||
|
||||
@override_settings(EMAIL_TIMEOUT=10)
|
||||
def test_email_timeout_override_settings(self):
|
||||
backend = smtp.EmailBackend()
|
||||
self.assertEqual(backend.timeout, 10)
|
||||
|
|
Loading…
Reference in New Issue