_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.
This commit is contained in:
Barry Warsaw 2002-01-27 06:48:02 +00:00
parent 84432eb4c0
commit 15e9dc9eac
1 changed files with 7 additions and 2 deletions

View File

@ -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