mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			589 lines
		
	
	
	
		
			24 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			589 lines
		
	
	
	
		
			24 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| \declaremodule{standard}{email.Message}
 | |
| \modulesynopsis{The base class representing email messages.}
 | |
| 
 | |
| The central class in the \module{email} package is the
 | |
| \class{Message} class; it is the base class for the \module{email}
 | |
| object model.  \class{Message} provides the core functionality for
 | |
| setting and querying header fields, and for accessing message bodies.
 | |
| 
 | |
| Conceptually, a \class{Message} object consists of \emph{headers} and
 | |
| \emph{payloads}.  Headers are \rfc{2822} style field names and
 | |
| values where the field name and value are separated by a colon.  The
 | |
| colon is not part of either the field name or the field value.
 | |
| 
 | |
| Headers are stored and returned in case-preserving form but are
 | |
| matched case-insensitively.  There may also be a single envelope
 | |
| header, also known as the \emph{Unix-From} header or the
 | |
| \code{From_} header.  The payload is either a string in the case of
 | |
| simple message objects or a list of \class{Message} objects for
 | |
| MIME container documents (e.g. \mimetype{multipart/*} and
 | |
| \mimetype{message/rfc822}).
 | |
| 
 | |
| \class{Message} objects provide a mapping style interface for
 | |
| accessing the message headers, and an explicit interface for accessing
 | |
| both the headers and the payload.  It provides convenience methods for
 | |
| generating a flat text representation of the message object tree, for
 | |
| accessing commonly used header parameters, and for recursively walking
 | |
| over the object tree.
 | |
| 
 | |
| Here are the methods of the \class{Message} class:
 | |
| 
 | |
| \begin{classdesc}{Message}{}
 | |
| The constructor takes no arguments.
 | |
| \end{classdesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{as_string}{\optional{unixfrom}}
 | |
| Return the entire message flatten as a string.  When optional
 | |
| \var{unixfrom} is \code{True}, the envelope header is included in the
 | |
| returned string.  \var{unixfrom} defaults to \code{False}.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{__str__}{}
 | |
| Equivalent to \method{as_string(unixfrom=True)}.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{is_multipart}{}
 | |
| Return \code{True} if the message's payload is a list of
 | |
| sub-\class{Message} objects, otherwise return \code{False}.  When
 | |
| \method{is_multipart()} returns False, the payload should be a string
 | |
| object.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{set_unixfrom}{unixfrom}
 | |
| Set the message's envelope header to \var{unixfrom}, which should be a string.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_unixfrom}{}
 | |
| Return the message's envelope header.  Defaults to \code{None} if the
 | |
| envelope header was never set.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{attach}{payload}
 | |
| Add the given \var{payload} to the current payload, which must be
 | |
| \code{None} or a list of \class{Message} objects before the call.
 | |
| After the call, the payload will always be a list of \class{Message}
 | |
| objects.  If you want to set the payload to a scalar object (e.g. a
 | |
| string), use \method{set_payload()} instead.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_payload}{\optional{i\optional{, decode}}}
 | |
| Return a reference the current payload, which will be a list of
 | |
| \class{Message} objects when \method{is_multipart()} is \code{True}, or a
 | |
| string when \method{is_multipart()} is \code{False}.  If the
 | |
| payload is a list and you mutate the list object, you modify the
 | |
| message's payload in place.
 | |
| 
 | |
| With optional argument \var{i}, \method{get_payload()} will return the
 | |
| \var{i}-th element of the payload, counting from zero, if
 | |
| \method{is_multipart()} is \code{True}.  An \exception{IndexError}
 | |
| will be raised if \var{i} is less than 0 or greater than or equal to
 | |
| the number of items in the payload.  If the payload is a string
 | |
| (i.e. \method{is_multipart()} is \code{False}) and \var{i} is given, a
 | |
| \exception{TypeError} is raised.
 | |
| 
 | |
| Optional \var{decode} is a flag indicating whether the payload should be
 | |
| decoded or not, according to the \mailheader{Content-Transfer-Encoding} header.
 | |
| When \code{True} and the message is not a multipart, the payload will be
 | |
| decoded if this header's value is \samp{quoted-printable} or
 | |
| \samp{base64}.  If some other encoding is used, or
 | |
| \mailheader{Content-Transfer-Encoding} header is
 | |
| missing, or if the payload has bogus base64 data, the payload is
 | |
| returned as-is (undecoded).  If the message is a multipart and the
 | |
| \var{decode} flag is \code{True}, then \code{None} is returned.  The
 | |
| default for \var{decode} is \code{False}.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{set_payload}{payload\optional{, charset}}
 | |
| Set the entire message object's payload to \var{payload}.  It is the
 | |
| client's responsibility to ensure the payload invariants.  Optional
 | |
| \var{charset} sets the message's default character set; see
 | |
| \method{set_charset()} for details.
 | |
| 
 | |
| \versionchanged[\var{charset} argument added]{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{set_charset}{charset}
 | |
| Set the character set of the payload to \var{charset}, which can
 | |
| either be a \class{Charset} instance (see \refmodule{email.Charset}), a
 | |
| string naming a character set,
 | |
| or \code{None}.  If it is a string, it will be converted to a
 | |
| \class{Charset} instance.  If \var{charset} is \code{None}, the
 | |
| \code{charset} parameter will be removed from the
 | |
| \mailheader{Content-Type} header. Anything else will generate a
 | |
| \exception{TypeError}.
 | |
| 
 | |
| The message will be assumed to be of type \mimetype{text/*} encoded with
 | |
| \code{charset.input_charset}.  It will be converted to
 | |
| \code{charset.output_charset}
 | |
| and encoded properly, if needed, when generating the plain text
 | |
| representation of the message.  MIME headers
 | |
| (\mailheader{MIME-Version}, \mailheader{Content-Type},
 | |
| \mailheader{Content-Transfer-Encoding}) will be added as needed.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_charset}{}
 | |
| Return the \class{Charset} instance associated with the message's payload.
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| The following methods implement a mapping-like interface for accessing
 | |
| the message's \rfc{2822} headers.  Note that there are some
 | |
| semantic differences between these methods and a normal mapping
 | |
| (i.e. dictionary) interface.  For example, in a dictionary there are
 | |
| no duplicate keys, but here there may be duplicate message headers.  Also,
 | |
| in dictionaries there is no guaranteed order to the keys returned by
 | |
| \method{keys()}, but in a \class{Message} object, headers are always
 | |
| returned in the order they appeared in the original message, or were
 | |
| added to the message later.  Any header deleted and then re-added are
 | |
| always appended to the end of the header list.
 | |
| 
 | |
| These semantic differences are intentional and are biased toward
 | |
| maximal convenience.
 | |
| 
 | |
| Note that in all cases, any envelope header present in the message is
 | |
| not included in the mapping interface.
 | |
| 
 | |
| \begin{methoddesc}[Message]{__len__}{}
 | |
| Return the total number of headers, including duplicates.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{__contains__}{name}
 | |
| Return true if the message object has a field named \var{name}.
 | |
| Matching is done case-insensitively and \var{name} should not include the
 | |
| trailing colon.  Used for the \code{in} operator,
 | |
| e.g.:
 | |
| 
 | |
| \begin{verbatim}
 | |
| if 'message-id' in myMessage:
 | |
|     print 'Message-ID:', myMessage['message-id']
 | |
| \end{verbatim}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{__getitem__}{name}
 | |
| Return the value of the named header field.  \var{name} should not
 | |
| include the colon field separator.  If the header is missing,
 | |
| \code{None} is returned; a \exception{KeyError} is never raised.
 | |
| 
 | |
| Note that if the named field appears more than once in the message's
 | |
| headers, exactly which of those field values will be returned is
 | |
| undefined.  Use the \method{get_all()} method to get the values of all
 | |
| the extant named headers.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{__setitem__}{name, val}
 | |
| Add a header to the message with field name \var{name} and value
 | |
| \var{val}.  The field is appended to the end of the message's existing
 | |
| fields.
 | |
| 
 | |
| Note that this does \emph{not} overwrite or delete any existing header
 | |
| with the same name.  If you want to ensure that the new header is the
 | |
| only one present in the message with field name
 | |
| \var{name}, delete the field first, e.g.:
 | |
| 
 | |
| \begin{verbatim}
 | |
| del msg['subject']
 | |
| msg['subject'] = 'Python roolz!'
 | |
| \end{verbatim}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{__delitem__}{name}
 | |
| Delete all occurrences of the field with name \var{name} from the
 | |
| message's headers.  No exception is raised if the named field isn't
 | |
| present in the headers.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{has_key}{name}
 | |
| Return true if the message contains a header field named \var{name},
 | |
| otherwise return false.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{keys}{}
 | |
| Return a list of all the message's header field names.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{values}{}
 | |
| Return a list of all the message's field values.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{items}{}
 | |
| Return a list of 2-tuples containing all the message's field headers
 | |
| and values.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get}{name\optional{, failobj}}
 | |
| Return the value of the named header field.  This is identical to
 | |
| \method{__getitem__()} except that optional \var{failobj} is returned
 | |
| if the named header is missing (defaults to \code{None}).
 | |
| \end{methoddesc}
 | |
| 
 | |
| Here are some additional useful methods:
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_all}{name\optional{, failobj}}
 | |
| Return a list of all the values for the field named \var{name}.
 | |
| If there are no such named headers in the message, \var{failobj} is
 | |
| returned (defaults to \code{None}).
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{add_header}{_name, _value, **_params}
 | |
| Extended header setting.  This method is similar to
 | |
| \method{__setitem__()} except that additional header parameters can be
 | |
| provided as keyword arguments.  \var{_name} is the header field to add
 | |
| and \var{_value} is the \emph{primary} value for the header.
 | |
| 
 | |
| For each item in the keyword argument dictionary \var{_params}, the
 | |
| key is taken as the parameter name, with underscores converted to
 | |
| dashes (since dashes are illegal in Python identifiers).  Normally,
 | |
| the parameter will be added as \code{key="value"} unless the value is
 | |
| \code{None}, in which case only the key will be added.
 | |
| 
 | |
| Here's an example:
 | |
| 
 | |
| \begin{verbatim}
 | |
| msg.add_header('Content-Disposition', 'attachment', filename='bud.gif')
 | |
| \end{verbatim}
 | |
| 
 | |
| This will add a header that looks like
 | |
| 
 | |
| \begin{verbatim}
 | |
| Content-Disposition: attachment; filename="bud.gif"
 | |
| \end{verbatim}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{replace_header}{_name, _value}
 | |
| Replace a header.  Replace the first header found in the message that
 | |
| matches \var{_name}, retaining header order and field name case.  If
 | |
| no matching header was found, a \exception{KeyError} is raised.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_content_type}{}
 | |
| Return the message's content type.  The returned string is coerced to
 | |
| lower case of the form \mimetype{maintype/subtype}.  If there was no
 | |
| \mailheader{Content-Type} header in the message the default type as
 | |
| given by \method{get_default_type()} will be returned.  Since
 | |
| according to \rfc{2045}, messages always have a default type,
 | |
| \method{get_content_type()} will always return a value.
 | |
| 
 | |
| \rfc{2045} defines a message's default type to be
 | |
| \mimetype{text/plain} unless it appears inside a
 | |
| \mimetype{multipart/digest} container, in which case it would be
 | |
| \mimetype{message/rfc822}.  If the \mailheader{Content-Type} header
 | |
| has an invalid type specification, \rfc{2045} mandates that the
 | |
| default type be \mimetype{text/plain}.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_content_maintype}{}
 | |
| Return the message's main content type.  This is the
 | |
| \mimetype{maintype} part of the string returned by
 | |
| \method{get_content_type()}.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_content_subtype}{}
 | |
| Return the message's sub-content type.  This is the \mimetype{subtype}
 | |
| part of the string returned by \method{get_content_type()}.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_default_type}{}
 | |
| Return the default content type.  Most messages have a default content
 | |
| type of \mimetype{text/plain}, except for messages that are subparts
 | |
| of \mimetype{multipart/digest} containers.  Such subparts have a
 | |
| default content type of \mimetype{message/rfc822}.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{set_default_type}{ctype}
 | |
| Set the default content type.  \var{ctype} should either be
 | |
| \mimetype{text/plain} or \mimetype{message/rfc822}, although this is
 | |
| not enforced.  The default content type is not stored in the
 | |
| \mailheader{Content-Type} header.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_params}{\optional{failobj\optional{,
 | |
|     header\optional{, unquote}}}}
 | |
| Return the message's \mailheader{Content-Type} parameters, as a list.  The
 | |
| elements of the returned list are 2-tuples of key/value pairs, as
 | |
| split on the \character{=} sign.  The left hand side of the
 | |
| \character{=} is the key, while the right hand side is the value.  If
 | |
| there is no \character{=} sign in the parameter the value is the empty
 | |
| string, otherwise the value is as described in \method{get_param()} and is
 | |
| unquoted if optional \var{unquote} is \code{True} (the default).
 | |
| 
 | |
| Optional \var{failobj} is the object to return if there is no
 | |
| \mailheader{Content-Type} header.  Optional \var{header} is the header to
 | |
| search instead of \mailheader{Content-Type}.
 | |
| 
 | |
| \versionchanged[\var{unquote} argument added]{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_param}{param\optional{,
 | |
|     failobj\optional{, header\optional{, unquote}}}}
 | |
| Return the value of the \mailheader{Content-Type} header's parameter
 | |
| \var{param} as a string.  If the message has no \mailheader{Content-Type}
 | |
| header or if there is no such parameter, then \var{failobj} is
 | |
| returned (defaults to \code{None}).
 | |
| 
 | |
| Optional \var{header} if given, specifies the message header to use
 | |
| instead of \mailheader{Content-Type}.
 | |
| 
 | |
| Parameter keys are always compared case insensitively.  The return
 | |
| value can either be a string, or a 3-tuple if the parameter was
 | |
| \rfc{2231} encoded.  When it's a 3-tuple, the elements of the value are of
 | |
| the form \code{(CHARSET, LANGUAGE, VALUE)}, where \code{LANGUAGE} may
 | |
| be the empty string.  Your application should be prepared to deal with
 | |
| 3-tuple return values, which it can convert to a Unicode string like
 | |
| so:
 | |
| 
 | |
| \begin{verbatim}
 | |
| param = msg.get_param('foo')
 | |
| if isinstance(param, tuple):
 | |
|     param = unicode(param[2], param[0])
 | |
| \end{verbatim}
 | |
| 
 | |
| In any case, the parameter value (either the returned string, or the
 | |
| \code{VALUE} item in the 3-tuple) is always unquoted, unless
 | |
| \var{unquote} is set to \code{False}.
 | |
| 
 | |
| \versionchanged[\var{unquote} argument added, and 3-tuple return value
 | |
| possible]{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{set_param}{param, value\optional{,
 | |
|     header\optional{, requote\optional{, charset\optional{, language}}}}}
 | |
| 
 | |
| Set a parameter in the \mailheader{Content-Type} header.  If the
 | |
| parameter already exists in the header, its value will be replaced
 | |
| with \var{value}.  If the \mailheader{Content-Type} header as not yet
 | |
| been defined for this message, it will be set to \mimetype{text/plain}
 | |
| and the new parameter value will be appended as per \rfc{2045}.
 | |
| 
 | |
| Optional \var{header} specifies an alternative header to
 | |
| \mailheader{Content-Type}, and all parameters will be quoted as
 | |
| necessary unless optional \var{requote} is \code{False} (the default
 | |
| is \code{True}).
 | |
| 
 | |
| If optional \var{charset} is specified, the parameter will be encoded
 | |
| according to \rfc{2231}. Optional \var{language} specifies the RFC
 | |
| 2231 language, defaulting to the empty string.  Both \var{charset} and
 | |
| \var{language} should be strings.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{del_param}{param\optional{, header\optional{,
 | |
|     requote}}}
 | |
| Remove the given parameter completely from the
 | |
| \mailheader{Content-Type} header.  The header will be re-written in
 | |
| place without the parameter or its value.  All values will be quoted
 | |
| as necessary unless \var{requote} is \code{False} (the default is
 | |
| \code{True}).  Optional \var{header} specifies an alternative to
 | |
| \mailheader{Content-Type}.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{set_type}{type\optional{, header}\optional{,
 | |
|     requote}}
 | |
| Set the main type and subtype for the \mailheader{Content-Type}
 | |
| header. \var{type} must be a string in the form
 | |
| \mimetype{maintype/subtype}, otherwise a \exception{ValueError} is
 | |
| raised.
 | |
| 
 | |
| This method replaces the \mailheader{Content-Type} header, keeping all
 | |
| the parameters in place.  If \var{requote} is \code{False}, this
 | |
| leaves the existing header's quoting as is, otherwise the parameters
 | |
| will be quoted (the default).
 | |
| 
 | |
| An alternative header can be specified in the \var{header} argument.
 | |
| When the \mailheader{Content-Type} header is set a
 | |
| \mailheader{MIME-Version} header is also added.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_filename}{\optional{failobj}}
 | |
| Return the value of the \code{filename} parameter of the
 | |
| \mailheader{Content-Disposition} header of the message, or \var{failobj} if
 | |
| either the header is missing, or has no \code{filename} parameter.
 | |
| The returned string will always be unquoted as per
 | |
| \method{Utils.unquote()}.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_boundary}{\optional{failobj}}
 | |
| Return the value of the \code{boundary} parameter of the
 | |
| \mailheader{Content-Type} header of the message, or \var{failobj} if either
 | |
| the header is missing, or has no \code{boundary} parameter.  The
 | |
| returned string will always be unquoted as per
 | |
| \method{Utils.unquote()}.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{set_boundary}{boundary}
 | |
| Set the \code{boundary} parameter of the \mailheader{Content-Type}
 | |
| header to \var{boundary}.  \method{set_boundary()} will always quote
 | |
| \var{boundary} if necessary.  A \exception{HeaderParseError} is raised
 | |
| if the message object has no \mailheader{Content-Type} header.
 | |
| 
 | |
| Note that using this method is subtly different than deleting the old
 | |
| \mailheader{Content-Type} header and adding a new one with the new boundary
 | |
| via \method{add_header()}, because \method{set_boundary()} preserves the
 | |
| order of the \mailheader{Content-Type} header in the list of headers.
 | |
| However, it does \emph{not} preserve any continuation lines which may
 | |
| have been present in the original \mailheader{Content-Type} header.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_content_charset}{\optional{failobj}}
 | |
| Return the \code{charset} parameter of the \mailheader{Content-Type}
 | |
| header, coerced to lower case.  If there is no
 | |
| \mailheader{Content-Type} header, or if that header has no
 | |
| \code{charset} parameter, \var{failobj} is returned.
 | |
| 
 | |
| Note that this method differs from \method{get_charset()} which
 | |
| returns the \class{Charset} instance for the default encoding of the
 | |
| message body.
 | |
| 
 | |
| \versionadded{2.2.2}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_charsets}{\optional{failobj}}
 | |
| Return a list containing the character set names in the message.  If
 | |
| the message is a \mimetype{multipart}, then the list will contain one
 | |
| element for each subpart in the payload, otherwise, it will be a list
 | |
| of length 1.
 | |
| 
 | |
| Each item in the list will be a string which is the value of the
 | |
| \code{charset} parameter in the \mailheader{Content-Type} header for the
 | |
| represented subpart.  However, if the subpart has no
 | |
| \mailheader{Content-Type} header, no \code{charset} parameter, or is not of
 | |
| the \mimetype{text} main MIME type, then that item in the returned list
 | |
| will be \var{failobj}.
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{walk}{}
 | |
| The \method{walk()} method is an all-purpose generator which can be
 | |
| used to iterate over all the parts and subparts of a message object
 | |
| tree, in depth-first traversal order.  You will typically use
 | |
| \method{walk()} as the iterator in a \code{for} loop; each
 | |
| iteration returns the next subpart.
 | |
| 
 | |
| Here's an example that prints the MIME type of every part of a
 | |
| multipart message structure:
 | |
| 
 | |
| \begin{verbatim}
 | |
| >>> for part in msg.walk():
 | |
| >>>     print part.get_content_type()
 | |
| multipart/report
 | |
| text/plain
 | |
| message/delivery-status
 | |
| text/plain
 | |
| text/plain
 | |
| message/rfc822
 | |
| \end{verbatim}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \class{Message} objects can also optionally contain two instance
 | |
| attributes, which can be used when generating the plain text of a MIME
 | |
| message.
 | |
| 
 | |
| \begin{datadesc}{preamble}
 | |
| The format of a MIME document allows for some text between the blank
 | |
| line following the headers, and the first multipart boundary string.
 | |
| Normally, this text is never visible in a MIME-aware mail reader
 | |
| because it falls outside the standard MIME armor.  However, when
 | |
| viewing the raw text of the message, or when viewing the message in a
 | |
| non-MIME aware reader, this text can become visible.
 | |
| 
 | |
| The \var{preamble} attribute contains this leading extra-armor text
 | |
| for MIME documents.  When the \class{Parser} discovers some text after
 | |
| the headers but before the first boundary string, it assigns this text
 | |
| to the message's \var{preamble} attribute.  When the \class{Generator}
 | |
| is writing out the plain text representation of a MIME message, and it
 | |
| finds the message has a \var{preamble} attribute, it will write this
 | |
| text in the area between the headers and the first boundary.  See
 | |
| \refmodule{email.Parser} and \refmodule{email.Generator} for details.
 | |
| 
 | |
| Note that if the message object has no preamble, the
 | |
| \var{preamble} attribute will be \code{None}.
 | |
| \end{datadesc}
 | |
| 
 | |
| \begin{datadesc}{epilogue}
 | |
| The \var{epilogue} attribute acts the same way as the \var{preamble}
 | |
| attribute, except that it contains text that appears between the last
 | |
| boundary and the end of the message.
 | |
| 
 | |
| One note: when generating the flat text for a \mimetype{multipart}
 | |
| message that has no \var{epilogue} (using the standard
 | |
| \class{Generator} class), no newline is added after the closing
 | |
| boundary line.  If the message object has an \var{epilogue} and its
 | |
| value does not start with a newline, a newline is printed after the
 | |
| closing boundary.  This seems a little clumsy, but it makes the most
 | |
| practical sense.  The upshot is that if you want to ensure that a
 | |
| newline get printed after your closing \mimetype{multipart} boundary,
 | |
| set the \var{epilogue} to the empty string.
 | |
| \end{datadesc}
 | |
| 
 | |
| \subsubsection{Deprecated methods}
 | |
| 
 | |
| The following methods are deprecated in \module{email} version 2.
 | |
| They are documented here for completeness.
 | |
| 
 | |
| \begin{methoddesc}[Message]{add_payload}{payload}
 | |
| Add \var{payload} to the message object's existing payload.  If, prior
 | |
| to calling this method, the object's payload was \code{None}
 | |
| (i.e. never before set), then after this method is called, the payload
 | |
| will be the argument \var{payload}.
 | |
| 
 | |
| If the object's payload was already a list
 | |
| (i.e. \method{is_multipart()} returns 1), then \var{payload} is
 | |
| appended to the end of the existing payload list.
 | |
| 
 | |
| For any other type of existing payload, \method{add_payload()} will
 | |
| transform the new payload into a list consisting of the old payload
 | |
| and \var{payload}, but only if the document is already a MIME
 | |
| multipart document.  This condition is satisfied if the message's
 | |
| \mailheader{Content-Type} header's main type is either
 | |
| \mimetype{multipart}, or there is no \mailheader{Content-Type}
 | |
| header.  In any other situation,
 | |
| \exception{MultipartConversionError} is raised.
 | |
| 
 | |
| \deprecated{2.2.2}{Use the \method{attach()} method instead.}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_type}{\optional{failobj}}
 | |
| Return the message's content type, as a string of the form
 | |
| \mimetype{maintype/subtype} as taken from the
 | |
| \mailheader{Content-Type} header.
 | |
| The returned string is coerced to lowercase.
 | |
| 
 | |
| If there is no \mailheader{Content-Type} header in the message,
 | |
| \var{failobj} is returned (defaults to \code{None}).
 | |
| 
 | |
| \deprecated{2.2.2}{Use the \method{get_content_type()} method instead.}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_main_type}{\optional{failobj}}
 | |
| Return the message's \emph{main} content type.  This essentially returns the
 | |
| \var{maintype} part of the string returned by \method{get_type()}, with the
 | |
| same semantics for \var{failobj}.
 | |
| 
 | |
| \deprecated{2.2.2}{Use the \method{get_content_maintype()} method instead.}
 | |
| \end{methoddesc}
 | |
| 
 | |
| \begin{methoddesc}[Message]{get_subtype}{\optional{failobj}}
 | |
| Return the message's sub-content type.  This essentially returns the
 | |
| \var{subtype} part of the string returned by \method{get_type()}, with the
 | |
| same semantics for \var{failobj}.
 | |
| 
 | |
| \deprecated{2.2.2}{Use the \method{get_content_subtype()} method instead.}
 | |
| \end{methoddesc}
 | |
| 
 | 
