Commits

jez...@bcc190cf-cafb-0310-a4f2-bffc1f526a37  committed b88a113

Fixed #15750 -- Handle empty mail server credentials gracefully. Thanks, LeandroSouza and bedmondmark.

  • Participants
  • Parent commits c5066e1

Comments (0)

Files changed (2)

File django/core/mail/backends/smtp.py

         super(EmailBackend, self).__init__(fail_silently=fail_silently)
         self.host = host or settings.EMAIL_HOST
         self.port = port or settings.EMAIL_PORT
-        self.username = username or settings.EMAIL_HOST_USER
-        self.password = password or settings.EMAIL_HOST_PASSWORD
+        if username is None:
+            self.username = settings.EMAIL_HOST_USER
+        else:
+            self.username = username
+        if password is None:
+            self.password = settings.EMAIL_HOST_PASSWORD
+        else:
+            self.password = password
         if use_tls is None:
             self.use_tls = settings.EMAIL_USE_TLS
         else:

File tests/regressiontests/mail/tests.py

 
     def get_mailbox_content(self):
         return self.server.get_sink()
+
+    @override_settings(EMAIL_HOST_USER="not empty username",
+                        EMAIL_HOST_PASSWORD="not empty password")
+    def test_email_authentication_use_settings(self):
+        backend = smtp.EmailBackend()
+        self.assertEqual(backend.username, 'not empty username')
+        self.assertEqual(backend.password, 'not empty password')
+
+    @override_settings(EMAIL_HOST_USER="not empty username",
+                        EMAIL_HOST_PASSWORD="not empty password")
+    def test_email_authentication_override_settings(self):
+        backend = smtp.EmailBackend(username='username', password='password')
+        self.assertEqual(backend.username, 'username')
+        self.assertEqual(backend.password, 'password')
+
+    @override_settings(EMAIL_HOST_USER="not empty username",
+                        EMAIL_HOST_PASSWORD="not empty password")
+    def test_email_disabled_authentication(self):
+        backend = smtp.EmailBackend(username='', password='')
+        self.assertEqual(backend.username, '')
+        self.assertEqual(backend.password, '')