mirror of https://github.com/python/cpython.git
Merge #15232: correctly mangle From lines in MIME preamble and epilogue
This commit is contained in:
commit
970bef295d
|
@ -252,7 +252,11 @@ def _handle_multipart(self, msg):
|
|||
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
|
||||
|
@ -270,7 +274,11 @@ def _handle_multipart(self, msg):
|
|||
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
|
||||
|
|
|
@ -1283,6 +1283,28 @@ def test_dont_mangle_from(self):
|
|||
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
|
||||
|
|
|
@ -52,6 +52,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 #15094: Incorrectly placed #endif in _tkinter.c.
|
||||
Patch by Serhiy Storchaka.
|
||||
|
||||
|
|
Loading…
Reference in New Issue