get_payload(): Teach this about various uunencoded
Content-Transfer-Encodings
diff --git a/Lib/email/Message.py b/Lib/email/Message.py
index 4c6b3da..66f8640 100644
--- a/Lib/email/Message.py
+++ b/Lib/email/Message.py
@@ -5,6 +5,7 @@
 """
 
 import re
+import uu
 import binascii
 import warnings
 from cStringIO import StringIO
@@ -165,13 +166,15 @@
         the list object, you modify the message's payload in place.  Optional
         i returns that index into the payload.
 
-        Optional decode is a flag (defaulting to False) indicating whether the
-        payload should be decoded or not, according to the
-        Content-Transfer-Encoding header.  When True and the message is not a
-        multipart, the payload will be decoded if this header's value is
-        `quoted-printable' or `base64'.  If some other encoding is used, or
-        the header is missing, or if the payload has bogus base64 data, the
-        payload is returned as-is (undecoded).
+        Optional decode is a flag indicating whether the payload should be
+        decoded or not, according to the Content-Transfer-Encoding header
+        (default is False).
+
+        When True and the message is not a multipart, the payload will be
+        decoded if this header's value is `quoted-printable' or `base64'.  If
+        some other encoding is used, or the header is missing, or if the
+        payload has bogus data (i.e. bogus base64 or uuencoded data), the
+        payload is returned as-is.
 
         If the message is a multipart and the decode flag is True, then None
         is returned.
@@ -185,15 +188,23 @@
         if decode:
             if self.is_multipart():
                 return None
-            cte = self.get('content-transfer-encoding', '')
-            if cte.lower() == 'quoted-printable':
+            cte = self.get('content-transfer-encoding', '').lower()
+            if cte == 'quoted-printable':
                 return Utils._qdecode(payload)
-            elif cte.lower() == 'base64':
+            elif cte == 'base64':
                 try:
                     return Utils._bdecode(payload)
                 except binascii.Error:
                     # Incorrect padding
                     return payload
+            elif cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'):
+                sfp = StringIO()
+                try:
+                    uu.decode(StringIO(payload+'\n'), sfp)
+                    payload = sfp.getvalue()
+                except uu.Error:
+                    # Some decoding problem
+                    return payload
         # Everything else, including encodings with 8bit or 7bit are returned
         # unchanged.
         return payload