These two classes provide bases for more specific content type

subclasses.

MIMENonMultipart: Base class for non-multipart/* content type subclass
specializations, e.g. image/gif.  This class overrides attach() which
raises an exception, since it makes no sense to attach a subpart to
e.g. an image/gif message.

MIMEMultipart: Base class for multipart/* content type subclass
specializations, e.g. multipart/mixed.  Does little more than provide
a useful constructor.
This commit is contained in:
Barry Warsaw 2002-06-01 05:59:12 +00:00
parent 1c30aa2292
commit 2f514a806d
2 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,34 @@
# Copyright (C) 2002 Python Software Foundation
# Author: barry@zope.com (Barry Warsaw)
"""Base class for MIME multipart/* type messages.
"""
from email import MIMEBase
class MIMEMultipart(MIMEBase.MIMEBase):
"""Base class for MIME multipart/* type messages."""
def __init__(self, _subtype='mixed', boundary=None, *_subparts, **_params):
"""Creates a multipart/* type message.
By default, creates a multipart/mixed message, with proper
Content-Type: and MIME-Version: headers.
_subtype is the subtype of the multipart content type, defaulting to
`mixed'.
boundary is the multipart boundary string. By default it is
calculated as needed.
_subparts is a sequence of initial subparts for the multipart. It
must be possible to convert this sequence to a list. You can always
attach new subparts to the message by using the attach() method.
Additional parameters for the Content-Type: header are taken from the
keyword arguments (or passed into the _params argument).
"""
MIMEBase.MIMEBase.__init__(self, 'multipart', _subtype, **params)
self.attach(*list(_subparts))

View File

@ -0,0 +1,20 @@
# Copyright (C) 2002 Python Software Foundation
# Author: barry@zope.com (Barry Warsaw)
"""Base class for MIME type messages that are not multipart.
"""
from email import Errors
from email import MIMEBase
class MIMENonMultipart(MIMEBase.MIMEBase):
"""Base class for MIME multipart/* type messages."""
def attach(self, payload):
# The public API prohibits attaching multiple subparts to MIMEBase
# derived subtypes since none of them are, by definition, of content
# type multipart/*
raise Errors.MultipartConversionError(
'Cannot attach additional subparts to non-multipart/*')