diff options
author | Barry Warsaw <barry@python.org> | 2002-01-27 06:48:02 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2002-01-27 06:48:02 (GMT) |
commit | 15e9dc9eac219775aa70e57652810a187584d7c6 (patch) | |
tree | fa8018a787ae13dca64383f2d88771f5b2153535 /Lib/email | |
parent | 84432eb4c07ac812f140dae06633e73896449d39 (diff) | |
download | cpython-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/email')
-rw-r--r-- | Lib/email/Parser.py | 9 |
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 |