diff options
| author | Claude Paroz <claude@2xlibre.net> | 2013-01-03 20:41:45 +0100 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2013-01-03 20:41:45 +0100 |
| commit | ffa50ca35219aa328e8e4ecda450a53c27c2e710 (patch) | |
| tree | f6233843b313a9616a1611fb4e11443a41d8134a | |
| parent | 1b3f832ab7291b6d92a27288bb97b3a3b712ebcb (diff) | |
Fixed #19382 -- Stopped smtp backend raising exception when already closed
Thanks Sebastian Noack for the report and the initial patch.
| -rw-r--r-- | django/core/mail/backends/smtp.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/mail/tests.py | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/django/core/mail/backends/smtp.py b/django/core/mail/backends/smtp.py index baffa8f2df..3ae08f4340 100644 --- a/django/core/mail/backends/smtp.py +++ b/django/core/mail/backends/smtp.py @@ -60,6 +60,8 @@ class EmailBackend(BaseEmailBackend): def close(self): """Closes the connection to the email server.""" + if self.connection is None: + return try: try: self.connection.quit() diff --git a/tests/regressiontests/mail/tests.py b/tests/regressiontests/mail/tests.py index 9ab8c2c301..059dd6d09a 100644 --- a/tests/regressiontests/mail/tests.py +++ b/tests/regressiontests/mail/tests.py @@ -492,6 +492,16 @@ class BaseEmailBackendTests(object): self.assertEqual(message.get('from'), "tester") self.assertEqual(message.get('to'), "django") + def test_close_connection(self): + """ + Test that connection can be closed (even when not explicitely opened) + """ + conn = mail.get_connection(username='', password='') + try: + conn.close() + except Exception as e: + self.fail("close() unexpectedly raised an exception: %s" % e) + class LocmemBackendTests(BaseEmailBackendTests, TestCase): email_backend = 'django.core.mail.backends.locmem.EmailBackend' |
