mirror of
https://github.com/python/cpython.git
synced 2024-11-27 20:04:41 +08:00
#15232: correctly mangle From lines in MIME preamble and epilogue
This commit is contained in:
parent
e60e12b57a
commit
6a31bc6d81
@ -233,7 +233,11 @@ class Generator:
|
||||
msg.set_boundary(boundary)
|
||||
# If there's a preamble, write it out, with a trailing CRLF
|
||||
if msg.preamble is not None:
|
||||
self.write(msg.preamble + self._NL)
|
||||
if self._mangle_from_:
|
||||
preamble = fcre.sub('>From ', msg.preamble)
|
||||
else:
|
||||
preamble = msg.preamble
|
||||
self.write(preamble + self._NL)
|
||||
# dash-boundary transport-padding CRLF
|
||||
self.write('--' + boundary + self._NL)
|
||||
# body-part
|
||||
@ -251,7 +255,11 @@ class Generator:
|
||||
self.write(self._NL + '--' + boundary + '--')
|
||||
if msg.epilogue is not None:
|
||||
self.write(self._NL)
|
||||
self.write(msg.epilogue)
|
||||
if self._mangle_from_:
|
||||
epilogue = fcre.sub('>From ', msg.epilogue)
|
||||
else:
|
||||
epilogue = msg.epilogue
|
||||
self.write(epilogue)
|
||||
|
||||
def _handle_multipart_signed(self, msg):
|
||||
# The contents of signed parts has to stay unmodified in order to keep
|
||||
|
@ -1275,6 +1275,28 @@ From the desk of A.A.A.:
|
||||
Blah blah blah
|
||||
""")
|
||||
|
||||
def test_mangle_from_in_preamble_and_epilog(self):
|
||||
s = StringIO()
|
||||
g = Generator(s, mangle_from_=True)
|
||||
msg = email.message_from_string(textwrap.dedent("""\
|
||||
From: foo@bar.com
|
||||
Mime-Version: 1.0
|
||||
Content-Type: multipart/mixed; boundary=XXX
|
||||
|
||||
From somewhere unknown
|
||||
|
||||
--XXX
|
||||
Content-Type: text/plain
|
||||
|
||||
foo
|
||||
|
||||
--XXX--
|
||||
|
||||
From somewhere unknowable
|
||||
"""))
|
||||
g.flatten(msg)
|
||||
self.assertEqual(len([1 for x in s.getvalue().split('\n')
|
||||
if x.startswith('>From ')]), 2)
|
||||
|
||||
|
||||
# Test the basic MIMEAudio class
|
||||
|
@ -98,6 +98,9 @@ Core and Builtins
|
||||
Library
|
||||
-------
|
||||
|
||||
- Issue #15232: when mangle_from is True, email.Generator now correctly mangles
|
||||
lines that start with 'From' that occur in a MIME preamble or epilogue.
|
||||
|
||||
- Issue #13922: argparse no longer incorrectly strips '--'s that appear
|
||||
after the first one.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user