diff options
Diffstat (limited to 'Lib')
| -rw-r--r-- | Lib/email/header.py | 11 | ||||
| -rw-r--r-- | Lib/email/test/test_email.py | 13 |
2 files changed, 21 insertions, 3 deletions
diff --git a/Lib/email/header.py b/Lib/email/header.py index 94eb1a9..d462bf0 100644 --- a/Lib/email/header.py +++ b/Lib/email/header.py @@ -305,10 +305,15 @@ class Header: self._continuation_ws, splitchars) for string, charset in self._chunks: lines = string.splitlines() - for line in lines: + formatter.feed(lines[0], charset) + for line in lines[1:]: + formatter.newline() + if charset.header_encoding is not None: + formatter.feed(self._continuation_ws, USASCII) + line = ' ' + line.lstrip() formatter.feed(line, charset) - if len(lines) > 1: - formatter.newline() + if len(lines) > 1: + formatter.newline() formatter.add_transition() return formatter._str(linesep) diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index e7fcee3..4855371 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -968,6 +968,19 @@ List: List-Unsubscribe: <http://lists.sourceforge.net/lists/listinfo/spamassassi """) + def test_long_rfc2047_header_with_embedded_fws(self): + h = Header(textwrap.dedent("""\ + We're going to pretend this header is in a non-ascii character set + \tto see if line wrapping with encoded words and embedded + folding white space works"""), + charset='utf-8', + header_name='Test') + self.assertEqual(h.encode()+'\n', textwrap.dedent("""\ + =?utf-8?q?We=27re_going_to_pretend_this_header_is_in_a_non-ascii_chara?= + =?utf-8?q?cter_set?= + =?utf-8?q?_to_see_if_line_wrapping_with_encoded_words_and_embedded?= + =?utf-8?q?_folding_white_space_works?=""")+'\n') + # Test mangling of "From " lines in the body of a message |
