summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/core/mail/backends/smtp.py2
-rw-r--r--tests/regressiontests/mail/tests.py10
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'