summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/email/generator.py3
-rw-r--r--Lib/test/test_email/data/msg_02.txt1
-rw-r--r--Lib/test/test_email/test_email.py15
-rw-r--r--Misc/NEWS4
4 files changed, 16 insertions, 7 deletions
diff --git a/Lib/email/generator.py b/Lib/email/generator.py
index 07a97c7..e4a86d4 100644
--- a/Lib/email/generator.py
+++ b/Lib/email/generator.py
@@ -299,9 +299,8 @@ class Generator:
# body-part
self._fp.write(body_part)
# close-delimiter transport-padding
- self.write(self._NL + '--' + boundary + '--')
+ self.write(self._NL + '--' + boundary + '--' + self._NL)
if msg.epilogue is not None:
- self.write(self._NL)
if self._mangle_from_:
epilogue = fcre.sub('>From ', msg.epilogue)
else:
diff --git a/Lib/test/test_email/data/msg_02.txt b/Lib/test/test_email/data/msg_02.txt
index 43f2480..5d0a7e1 100644
--- a/Lib/test/test_email/data/msg_02.txt
+++ b/Lib/test/test_email/data/msg_02.txt
@@ -119,6 +119,7 @@ hello
--__--__----
+
--192.168.1.2.889.32614.987812255.500.21814
Content-type: text/plain; charset=us-ascii
Content-description: Digest Footer
diff --git a/Lib/test/test_email/test_email.py b/Lib/test/test_email/test_email.py
index 73ec2a6..51fe756 100644
--- a/Lib/test/test_email/test_email.py
+++ b/Lib/test/test_email/test_email.py
@@ -1711,7 +1711,8 @@ From: bperson@dom.ain
--BOUNDARY
---BOUNDARY--''')
+--BOUNDARY--
+''')
def test_no_parts_in_a_multipart_with_empty_epilogue(self):
outer = MIMEBase('multipart', 'mixed')
@@ -1756,7 +1757,8 @@ MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
hello world
---BOUNDARY--''')
+--BOUNDARY--
+''')
def test_seq_parts_in_a_multipart_with_empty_preamble(self):
eq = self.ndiffAssertEqual
@@ -1782,7 +1784,8 @@ MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
hello world
---BOUNDARY--''')
+--BOUNDARY--
+''')
def test_seq_parts_in_a_multipart_with_none_preamble(self):
@@ -1808,7 +1811,8 @@ MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
hello world
---BOUNDARY--''')
+--BOUNDARY--
+''')
def test_seq_parts_in_a_multipart_with_none_epilogue(self):
@@ -1834,7 +1838,8 @@ MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
hello world
---BOUNDARY--''')
+--BOUNDARY--
+''')
def test_seq_parts_in_a_multipart_with_empty_epilogue(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index fd89776..1ec77a4 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -48,6 +48,10 @@ Core and Builtins
Library
-------
+- Issue #14983: email.generator now always adds a line end after each MIME
+ boundary marker, instead of doing so only when there is an epilogue. This
+ fixes an RFC compliance bug and solves an issue with signed MIME parts.
+
- Issue #20540: Fix a performance regression (vs. Python 3.2) when layering
a multiprocessing Connection over a TCP socket. For small payloads, Nagle's
algorithm would introduce idle delays before the entire transmission of a