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)
|
msg.set_boundary(boundary)
|
||||||
# If there's a preamble, write it out, with a trailing CRLF
|
# If there's a preamble, write it out, with a trailing CRLF
|
||||||
if msg.preamble is not None:
|
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
|
# dash-boundary transport-padding CRLF
|
||||||
self.write('--' + boundary + self._NL)
|
self.write('--' + boundary + self._NL)
|
||||||
# body-part
|
# body-part
|
||||||
|
@ -270,7 +274,11 @@ def _handle_multipart(self, msg):
|
||||||
self.write(self._NL + '--' + boundary + '--')
|
self.write(self._NL + '--' + boundary + '--')
|
||||||
if msg.epilogue is not None:
|
if msg.epilogue is not None:
|
||||||
self.write(self._NL)
|
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):
|
def _handle_multipart_signed(self, msg):
|
||||||
# The contents of signed parts has to stay unmodified in order to keep
|
# 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
|
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
|
# Test the basic MIMEAudio class
|
||||||
|
|
|
@ -52,6 +52,9 @@ Core and Builtins
|
||||||
Library
|
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.
|
- Issue #15094: Incorrectly placed #endif in _tkinter.c.
|
||||||
Patch by Serhiy Storchaka.
|
Patch by Serhiy Storchaka.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue