Loading django/core/mail/backends/smtp.py +3 −2 Original line number Diff line number Diff line Loading @@ -63,9 +63,10 @@ class EmailBackend(BaseEmailBackend): try: try: self.connection.quit() except socket.sslerror: except (socket.sslerror, smtplib.SMTPServerDisconnected): # This happens when calling quit() on a TLS connection # sometimes. # sometimes, or when the connection was already disconnected # by the server. self.connection.close() except: if self.fail_silently: Loading tests/regressiontests/mail/tests.py +16 −3 Original line number Diff line number Diff line Loading @@ -659,7 +659,7 @@ class FakeSMTPServer(smtpd.SMTPServer, threading.Thread): asyncore.close_all() def stop(self): assert self.active if self.active: self.active = False self.join() Loading Loading @@ -715,3 +715,16 @@ class SMTPBackendTests(BaseEmailBackendTests, TestCase): backend = smtp.EmailBackend(username='', password='') self.assertEqual(backend.username, '') self.assertEqual(backend.password, '') def test_server_stopped(self): """ Test that closing the backend while the SMTP server is stopped doesn't raise an exception. """ backend = smtp.EmailBackend(username='', password='') backend.open() self.server.stop() try: backend.close() except Exception as e: self.fail("close() unexpectedly raised an exception: %s" % e) Loading
django/core/mail/backends/smtp.py +3 −2 Original line number Diff line number Diff line Loading @@ -63,9 +63,10 @@ class EmailBackend(BaseEmailBackend): try: try: self.connection.quit() except socket.sslerror: except (socket.sslerror, smtplib.SMTPServerDisconnected): # This happens when calling quit() on a TLS connection # sometimes. # sometimes, or when the connection was already disconnected # by the server. self.connection.close() except: if self.fail_silently: Loading
tests/regressiontests/mail/tests.py +16 −3 Original line number Diff line number Diff line Loading @@ -659,7 +659,7 @@ class FakeSMTPServer(smtpd.SMTPServer, threading.Thread): asyncore.close_all() def stop(self): assert self.active if self.active: self.active = False self.join() Loading Loading @@ -715,3 +715,16 @@ class SMTPBackendTests(BaseEmailBackendTests, TestCase): backend = smtp.EmailBackend(username='', password='') self.assertEqual(backend.username, '') self.assertEqual(backend.password, '') def test_server_stopped(self): """ Test that closing the backend while the SMTP server is stopped doesn't raise an exception. """ backend = smtp.EmailBackend(username='', password='') backend.open() self.server.stop() try: backend.close() except Exception as e: self.fail("close() unexpectedly raised an exception: %s" % e)