summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2002-01-27 06:48:02 (GMT)
committerBarry Warsaw <barry@python.org>2002-01-27 06:48:02 (GMT)
commit15e9dc9eac219775aa70e57652810a187584d7c6 (patch)
treefa8018a787ae13dca64383f2d88771f5b2153535 /Lib
parent84432eb4c07ac812f140dae06633e73896449d39 (diff)
downloadcpython-15e9dc9eac219775aa70e57652810a187584d7c6.zip
cpython-15e9dc9eac219775aa70e57652810a187584d7c6.tar.gz
cpython-15e9dc9eac219775aa70e57652810a187584d7c6.tar.bz2
_parsebody(): When adding subparts to a multipart container, make sure
that the first subpart added makes the payload a list object. Otherwise, a multipart/* with only one subpart will not have the proper structure.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/email/Parser.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/Lib/email/Parser.py b/Lib/email/Parser.py
index 44a0ca2..2f131d6 100644
--- a/Lib/email/Parser.py
+++ b/Lib/email/Parser.py
@@ -1,10 +1,11 @@
-# Copyright (C) 2001 Python Software Foundation
+# Copyright (C) 2001,2002 Python Software Foundation
# Author: barry@zope.com (Barry Warsaw)
"""A parser of RFC 2822 and MIME email messages.
"""
from cStringIO import StringIO
+from types import ListType
# Intrapackage imports
import Errors
@@ -133,7 +134,11 @@ class Parser:
msgobj = self.parsestr(part)
container.preamble = preamble
container.epilogue = epilogue
- container.add_payload(msgobj)
+ # Ensure that the container's payload is a list
+ if not isinstance(container.get_payload(), ListType):
+ container.set_payload([msgobj])
+ else:
+ container.add_payload(msgobj)
elif container.get_type() == 'message/delivery-status':
# This special kind of type contains blocks of headers separated
# by a blank line. We'll represent each header block as a