| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \declaremodule{standard}{email.Message} | 
					
						
							|  |  |  | \modulesynopsis{The base class representing email messages.} | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | matched case-insensitively.  There may also be a single envelope | 
					
						
							|  |  |  | header, also known as the \emph{Unix-From} header or the | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \code{From_} header.  The payload is either a string in the case of | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | simple message objects or a list of \class{Message} objects for | 
					
						
							|  |  |  | MIME container documents (e.g. \mimetype{multipart/*} and | 
					
						
							|  |  |  | \mimetype{message/rfc822}). | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \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. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Here are the methods of the \class{Message} class: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \begin{classdesc}{Message}{} | 
					
						
							|  |  |  | The constructor takes no arguments. | 
					
						
							|  |  |  | \end{classdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \begin{methoddesc}[Message]{as_string}{\optional{unixfrom}} | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | 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}. | 
					
						
							| 
									
										
										
										
											2003-04-18 23:03:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Note that this method is provided as a convenience and may not always | 
					
						
							|  |  |  | format the message the way you want.  For more flexibility, | 
					
						
							|  |  |  | instantiate a \class{Generator} instance and use its | 
					
						
							|  |  |  | \method{flatten()} method directly.  For example: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | from cStringIO import StringIO | 
					
						
							|  |  |  | from email.Generator import Generator | 
					
						
							|  |  |  | fp = StringIO() | 
					
						
							| 
									
										
										
										
											2003-10-31 19:52:30 +00:00
										 |  |  | g = Generator(fp, mangle_from_=False, maxheaderlen=60) | 
					
						
							| 
									
										
										
										
											2003-04-18 23:03:53 +00:00
										 |  |  | g.flatten(msg) | 
					
						
							|  |  |  | text = fp.getvalue() | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-05-22 20:44:03 +00:00
										 |  |  | \begin{methoddesc}[Message]{__str__}{} | 
					
						
							| 
									
										
										
										
											2002-10-01 14:29:58 +00:00
										 |  |  | Equivalent to \method{as_string(unixfrom=True)}. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{is_multipart}{} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{set_unixfrom}{unixfrom} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | Set the message's envelope header to \var{unixfrom}, which should be a string. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{get_unixfrom}{} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | Return the message's envelope header.  Defaults to \code{None} if the | 
					
						
							|  |  |  | envelope header was never set. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{attach}{payload} | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | Add the given \var{payload} to the current payload, which must be | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \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. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{get_payload}{\optional{i\optional{, decode}}} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | With optional argument \var{i}, \method{get_payload()} will return the | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \var{i}-th element of the payload, counting from zero, if | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \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 | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \exception{TypeError} is raised. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Optional \var{decode} is a flag indicating whether the payload should be | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | decoded or not, according to the \mailheader{Content-Transfer-Encoding} header. | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | When \code{True} and the message is not a multipart, the payload will be | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | decoded if this header's value is \samp{quoted-printable} or | 
					
						
							|  |  |  | \samp{base64}.  If some other encoding is used, or | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \mailheader{Content-Transfer-Encoding} header is | 
					
						
							| 
									
										
										
										
											2003-03-10 16:13:50 +00:00
										 |  |  | 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}. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \begin{methoddesc}[Message]{set_payload}{payload\optional{, charset}} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | Set the entire message object's payload to \var{payload}.  It is the | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | client's responsibility to ensure the payload invariants.  Optional | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | \var{charset} sets the message's default character set; see | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \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 | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | either be a \class{Charset} instance (see \refmodule{email.Charset}), a | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 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} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following methods implement a mapping-like interface for accessing | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | the message's \rfc{2822} headers.  Note that there are some | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | \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. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | Note that in all cases, any envelope header present in the message is | 
					
						
							|  |  |  | not included in the mapping interface. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \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}. | 
					
						
							| 
									
										
										
										
											2001-11-05 01:55:03 +00:00
										 |  |  | Matching is done case-insensitively and \var{name} should not include the | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 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, | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \code{None} is returned; a \exception{KeyError} is never raised. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | \var{name}, delete the field first, e.g.: | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \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} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | Return true if the message contains a header field named \var{name}, | 
					
						
							|  |  |  | otherwise return false. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{keys}{} | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | Return a list of all the message's header field names. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{values}{} | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | Return a list of all the message's field values. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{items}{} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | Return a list of 2-tuples containing all the message's field headers | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | and values. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \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}} | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | Return a list of all the values for the field named \var{name}. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | provided as keyword arguments.  \var{_name} is the header field to add | 
					
						
							|  |  |  | and \var{_value} is the \emph{primary} value for the header. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \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. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \versionadded{2.2.2} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \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} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \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} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \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}}}} | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | Return the message's \mailheader{Content-Type} parameters, as a list.  The | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | elements of the returned list are 2-tuples of key/value pairs, as | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | string, otherwise the value is as described in \method{get_param()} and is | 
					
						
							|  |  |  | unquoted if optional \var{unquote} is \code{True} (the default). | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Optional \var{failobj} is the object to return if there is no | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \mailheader{Content-Type} header.  Optional \var{header} is the header to | 
					
						
							|  |  |  | search instead of \mailheader{Content-Type}. | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \versionchanged[\var{unquote} argument added]{2.2.2} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{get_param}{param\optional{, | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  |     failobj\optional{, header\optional{, unquote}}}} | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | Return the value of the \mailheader{Content-Type} header's parameter | 
					
						
							|  |  |  | \var{param} as a string.  If the message has no \mailheader{Content-Type} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | instead of \mailheader{Content-Type}. | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2003-08-19 04:26:59 +00:00
										 |  |  | the form \code{(CHARSET, LANGUAGE, VALUE)}.  Note that both \code{CHARSET} and | 
					
						
							|  |  |  | \code{LANGUAGE} can be \code{None}, in which case you should consider | 
					
						
							|  |  |  | \code{VALUE} to be encoded in the \code{us-ascii} charset.  You can | 
					
						
							|  |  |  | usually ignore \code{LANGUAGE}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Your application should be prepared to deal with 3-tuple return | 
					
						
							|  |  |  | values, and can convert the parameter to a Unicode string like so: | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | param = msg.get_param('foo') | 
					
						
							|  |  |  | if isinstance(param, tuple): | 
					
						
							| 
									
										
										
										
											2003-08-19 04:26:59 +00:00
										 |  |  |     param = unicode(param[2], param[0] or 'us-ascii') | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In any case, the parameter value (either the returned string, or the | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | \code{VALUE} item in the 3-tuple) is always unquoted, unless | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \var{unquote} is set to \code{False}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \versionchanged[\var{unquote} argument added, and 3-tuple return value | 
					
						
							|  |  |  | possible]{2.2.2} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \begin{methoddesc}[Message]{set_param}{param, value\optional{, | 
					
						
							|  |  |  |     header\optional{, requote\optional{, charset\optional{, language}}}}} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | \code{True}).  Optional \var{header} specifies an alternative to | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \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. | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | When the \mailheader{Content-Type} header is set a | 
					
						
							|  |  |  | \mailheader{MIME-Version} header is also added. | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \versionadded{2.2.2} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{methoddesc}[Message]{get_filename}{\optional{failobj}} | 
					
						
							|  |  |  | Return the value of the \code{filename} parameter of the | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \mailheader{Content-Disposition} header of the message, or \var{failobj} if | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \mailheader{Content-Type} header of the message, or \var{failobj} if either | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 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} | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Note that using this method is subtly different than deleting the old | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | \mailheader{Content-Type} header and adding a new one with the new boundary | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | via \method{add_header()}, because \method{set_boundary()} preserves the | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | order of the \mailheader{Content-Type} header in the list of headers. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | However, it does \emph{not} preserve any continuation lines which may | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | have been present in the original \mailheader{Content-Type} header. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{methoddesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \begin{methoddesc}[Message]{get_content_charset}{\optional{failobj}} | 
					
						
							|  |  |  | Return the \code{charset} parameter of the \mailheader{Content-Type} | 
					
						
							| 
									
										
										
										
											2002-10-10 15:22:16 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | Note that this method differs from \method{get_charset()} which | 
					
						
							|  |  |  | returns the \class{Charset} instance for the default encoding of the | 
					
						
							|  |  |  | message body. | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \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 | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | \method{walk()} as the iterator in a \code{for} loop; each | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | iteration returns the next subpart. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | Here's an example that prints the MIME type of every part of a | 
					
						
							|  |  |  | multipart message structure: | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | >>> for part in msg.walk(): | 
					
						
							| 
									
										
										
										
											2004-09-28 02:56:45 +00:00
										 |  |  | ...     print part.get_content_type() | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | text in the area between the headers and the first boundary.  See | 
					
						
							|  |  |  | \refmodule{email.Parser} and \refmodule{email.Generator} for details. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							| 
									
										
										
										
											2001-10-19 04:34:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{datadesc} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \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 | 
					
						
							| 
									
										
										
										
											2003-12-31 18:37:28 +00:00
										 |  |  | (i.e. \method{is_multipart()} returns \code{True}), then \var{payload} is | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 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} | 
					
						
							|  |  |  | 
 |