From 5c9130ec466f531b7cea6302c762d8a29641b219 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 5 Nov 2002 20:54:37 +0000 Subject: _parsebody(): A fix for SF bug #631350, where a subobject in a multipart/digest isn't a message/rfc822. This is legal, but counter to recommended practice in RFC 2046, $5.1.5. The fix is to look at the content type after setting the default content type. If the maintype is then message or multipart, attach the parsed subobject, otherwise use set_payload() to set the data of the other object. --- Lib/email/Parser.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Lib/email/Parser.py b/Lib/email/Parser.py index 5fea3c3..6dfa4d3 100644 --- a/Lib/email/Parser.py +++ b/Lib/email/Parser.py @@ -221,9 +221,13 @@ class Parser: # msgobj in this case is the "message/rfc822" container msgobj = self.parsestr(parthdrs, headersonly=1) # while submsgobj is the message itself - submsgobj = self.parsestr(part) - msgobj.attach(submsgobj) msgobj.set_default_type('message/rfc822') + maintype = msgobj.get_content_maintype() + if maintype in ('message', 'multipart'): + submsgobj = self.parsestr(part) + msgobj.attach(submsgobj) + else: + msgobj.set_payload(part) else: msgobj = self.parsestr(part) container.preamble = preamble -- cgit v0.12