Index: django/contrib/admin/sites.py
===================================================================
--- django/contrib/admin/sites.py	(revision 7693)
+++ django/contrib/admin/sites.py	(working copy)
@@ -226,10 +226,14 @@
                 # Mistakenly entered e-mail address instead of username? Look it up.
                 try:
                     user = User.objects.get(email=username)
-                except User.DoesNotExist:
+                except (User.DoesNotExist, User.MultipleObjectsReturned):
                     message = _("Usernames cannot contain the '@' character.")
                 else:
-                    message = _("Your e-mail address is not your username. Try '%s' instead.") % user.username
+                    if user.check_password(password):
+                        message = _("Your e-mail address is not your username."
+                                    " Try '%s' instead." % user.username) 
+                    else:
+                        message = _("Usernames cannot contain the '@' character.")
             return self.display_login_form(request, message)
 
         # The user data is correct; log in the user in and continue.
Index: tests/regressiontests/admin_views/tests.py
===================================================================
--- tests/regressiontests/admin_views/tests.py	(revision 7693)
+++ tests/regressiontests/admin_views/tests.py	(working copy)
@@ -49,6 +49,14 @@
                      LOGIN_FORM_KEY: 1,
                      'username': 'super',
                      'password': 'secret'}
+        self.super_email_login = {'post_data': _encode_post_data({}),
+                     LOGIN_FORM_KEY: 1,
+                     'username': 'super@example.com',
+                     'password': 'secret'}
+        self.super_email_bad_login = {'post_data': _encode_post_data({}),
+                      LOGIN_FORM_KEY: 1,
+                      'username': 'super@example.com',
+                      'password': 'notsecret'}
         self.adduser_login = {'post_data': _encode_post_data({}),
                      LOGIN_FORM_KEY: 1,
                      'username': 'adduser',
@@ -83,6 +91,21 @@
         self.assertFalse(login.context)
         self.client.get('/test_admin/admin/logout/')
         
+        # Test if user enters e-mail address
+        request = self.client.get('/test_admin/admin/')
+        self.failUnlessEqual(request.status_code, 200)
+        login = self.client.post('/test_admin/admin/', self.super_email_login)
+        print login
+        self.assertContains(login, "Your e-mail address is not your username")
+        # only correct passwords get a username hint
+        login = self.client.post('/test_admin/admin/', self.super_email_bad_login)
+        self.assertContains(login, "Usernames cannot contain the &#39;@&#39; character")
+        new_user = User(username='jondoe', password='secret', email='super@example.com')
+        new_user.save()
+        # check to ensure if there are multiple e-mail addresses a user doesn't get a 500
+        login = self.client.post('/test_admin/admin/', self.super_email_login)
+        self.assertContains(login, "Usernames cannot contain the &#39;@&#39; character")        
+        
         # Add User
         request = self.client.get('/test_admin/admin/')
         self.failUnlessEqual(request.status_code, 200)
