_split_ascii(): In the clause where curlen + partlen > maxlen, if the
part itself is longer than maxlen, and we aren't already splitting on
whitespace, then we recursively split the part on whitespace and
append that to the this list.
diff --git a/Lib/email/Header.py b/Lib/email/Header.py
index 47a5508..83fe0d5 100644
--- a/Lib/email/Header.py
+++ b/Lib/email/Header.py
@@ -456,7 +456,14 @@
             elif curlen + partlen > maxlen:
                 if this:
                     lines.append(joiner.join(this) + eol)
-                this = [part]
+                # If this part is longer than maxlen and we aren't already
+                # splitting on whitespace, try to recursively split this line
+                # on whitespace.
+                if partlen > maxlen and ch <> ' ':
+                    this = [_split_ascii(part, maxlen, restlen,
+                                         continuation_ws, ' ')]
+                else:
+                    this = [part]
                 linelen = wslen + partlen
                 maxlen = restlen
             else: