Finish issue 5259 by adding tests and fixes for the 'login'
and 'cram-md5' auth methods.
diff --git a/Lib/smtplib.py b/Lib/smtplib.py
index 0b2a586..baed781 100755
--- a/Lib/smtplib.py
+++ b/Lib/smtplib.py
@@ -541,8 +541,9 @@
 
         def encode_cram_md5(challenge, user, password):
             challenge = base64.decodestring(challenge)
-            response = user + " " + hmac.HMAC(password, challenge).hexdigest()
-            return encode_base64(response)
+            response = user + " " + hmac.HMAC(password.encode('ascii'),
+                                              challenge).hexdigest()
+            return encode_base64(response.encode('ascii'), eol='')
 
         def encode_plain(user, password):
             s = "\0%s\0%s" % (user, password)
@@ -584,10 +585,10 @@
                 AUTH_PLAIN + " " + encode_plain(user, password))
         elif authmethod == AUTH_LOGIN:
             (code, resp) = self.docmd("AUTH",
-                "%s %s" % (AUTH_LOGIN, encode_base64(user)))
+                "%s %s" % (AUTH_LOGIN, encode_base64(user.encode('ascii'), eol='')))
             if code != 334:
                 raise SMTPAuthenticationError(code, resp)
-            (code, resp) = self.docmd(encode_base64(password))
+            (code, resp) = self.docmd(encode_base64(password.encode('ascii'), eol=''))
         elif authmethod is None:
             raise SMTPException("No suitable authentication method found.")
         if code not in (235, 503):