summaryrefslogtreecommitdiffstats
path: root/Lib/email
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2011-04-06 12:13:02 (GMT)
committerR David Murray <rdmurray@bitdance.com>2011-04-06 12:13:02 (GMT)
commitc5c147289556d9941876bb4b209412ad52731eb0 (patch)
treef0fa8df167f2096f200c081858bf90496b3bb563 /Lib/email
parentae664fb528c86da44fbb9350cca05659c206bfc2 (diff)
downloadcpython-c5c147289556d9941876bb4b209412ad52731eb0.zip
cpython-c5c147289556d9941876bb4b209412ad52731eb0.tar.gz
cpython-c5c147289556d9941876bb4b209412ad52731eb0.tar.bz2
#11605: don't use set/get_payload in feedparser; they do conversions.
Really the whole API needs to be gone over to restore the separation of concerns; but that's what email6 is about.
Diffstat (limited to 'Lib/email')
-rw-r--r--Lib/email/feedparser.py4
-rw-r--r--Lib/email/test/test_email.py47
2 files changed, 49 insertions, 2 deletions
diff --git a/Lib/email/feedparser.py b/Lib/email/feedparser.py
index de8750d..60a8325 100644
--- a/Lib/email/feedparser.py
+++ b/Lib/email/feedparser.py
@@ -368,12 +368,12 @@ class FeedParser:
end = len(mo.group(0))
self._last.epilogue = epilogue[:-end]
else:
- payload = self._last.get_payload()
+ payload = self._last._payload
if isinstance(payload, str):
mo = NLCRE_eol.search(payload)
if mo:
payload = payload[:-len(mo.group(0))]
- self._last.set_payload(payload)
+ self._last._payload = payload
self._input.pop_eof_matcher()
self._pop_message()
# Set the multipart up for newline cleansing, which will
diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py
index 245f659..b4dc575 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -3168,6 +3168,53 @@ class Test8BitBytesHandling(unittest.TestCase):
g = email.generator.BytesGenerator(s)
g.flatten(msg, linesep='\r\n')
self.assertEqual(s.getvalue(), text)
+
+ def test_8bit_multipart(self):
+ # Issue 11605
+ source = textwrap.dedent("""\
+ Date: Fri, 18 Mar 2011 17:15:43 +0100
+ To: foo@example.com
+ From: foodwatch-Newsletter <bar@example.com>
+ Subject: Aktuelles zu Japan, Klonfleisch und Smiley-System
+ Message-ID: <76a486bee62b0d200f33dc2ca08220ad@localhost.localdomain>
+ MIME-Version: 1.0
+ Content-Type: multipart/alternative;
+ boundary="b1_76a486bee62b0d200f33dc2ca08220ad"
+
+ --b1_76a486bee62b0d200f33dc2ca08220ad
+ Content-Type: text/plain; charset="utf-8"
+ Content-Transfer-Encoding: 8bit
+
+ Guten Tag, ,
+
+ mit großer Betroffenheit verfolgen auch wir im foodwatch-Team die
+ Nachrichten aus Japan.
+
+
+ --b1_76a486bee62b0d200f33dc2ca08220ad
+ Content-Type: text/html; charset="utf-8"
+ Content-Transfer-Encoding: 8bit
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+ <html lang="de">
+ <head>
+ <title>foodwatch - Newsletter</title>
+ </head>
+ <body>
+ <p>mit gro&szlig;er Betroffenheit verfolgen auch wir im foodwatch-Team
+ die Nachrichten aus Japan.</p>
+ </body>
+ </html>
+ --b1_76a486bee62b0d200f33dc2ca08220ad--
+
+ """).encode('utf-8')
+ msg = email.message_from_bytes(source)
+ s = BytesIO()
+ g = email.generator.BytesGenerator(s)
+ g.flatten(msg)
+ self.assertEqual(s.getvalue(), source)
+
maxDiff = None