Index: Lib/email/test/test_email.py =================================================================== --- Lib/email/test/test_email.py (revision 85140) +++ Lib/email/test/test_email.py (working copy) @@ -1659,6 +1659,12 @@ dh = decode_header(s % q) self.assertEqual(dh, [(a, 'iso-8859-1')]) + def test_rfc2047_Q_invalid_digits(self): + # issue 10004. + s = '=?iso-8659-1?Q?andr=e9=zz?=' + self.assertEqual(decode_header(s), + [(b'andr\xe9=zz', 'iso-8659-1')]) + # Test the MIMEMessage class class TestMIMEMessage(TestEmailBase): Index: Lib/email/quoprimime.py =================================================================== --- Lib/email/quoprimime.py (revision 85140) +++ Lib/email/quoprimime.py (working copy) @@ -294,4 +294,4 @@ the high level email.header class for that functionality. """ s = s.replace('_', ' ') - return re.sub(r'=\w{2}', _unquote_match, s, re.ASCII) + return re.sub(r'=[a-fA-F0-9]{2}', _unquote_match, s, re.ASCII)