| \declaremodule{standard}{email.Header} | 
 | \modulesynopsis{Representing non-ASCII headers} | 
 |  | 
 | \rfc{2822} is the base standard that describes the format of email | 
 | messages.  It derives from the older \rfc{822} standard which came | 
 | into widespread use at a time when most email was composed of \ASCII{} | 
 | characters only.  \rfc{2822} is a specification written assuming email | 
 | contains only 7-bit \ASCII{} characters. | 
 |  | 
 | Of course, as email has been deployed worldwide, it has become | 
 | internationalized, such that language specific character sets can now | 
 | be used in email messages.  The base standard still requires email | 
 | messages to be transfered using only 7-bit \ASCII{} characters, so a | 
 | slew of RFCs have been written describing how to encode email | 
 | containing non-\ASCII{} characters into \rfc{2822}-compliant format. | 
 | These RFCs include \rfc{2045}, \rfc{2046}, \rfc{2047}, and \rfc{2231}. | 
 | The \module{email} package supports these standards in its | 
 | \module{email.Header} and \module{email.Charset} modules. | 
 |  | 
 | If you want to include non-\ASCII{} characters in your email headers, | 
 | say in the \mailheader{Subject} or \mailheader{To} fields, you should | 
 | use the \class{Header} class and assign the field in the | 
 | \class{Message} object to an instance of \class{Header} instead of | 
 | using a string for the header value.  For example: | 
 |  | 
 | \begin{verbatim} | 
 | >>> from email.Message import Message | 
 | >>> from email.Header import Header | 
 | >>> msg = Message() | 
 | >>> h = Header('p\xf6stal', 'iso-8859-1') | 
 | >>> msg['Subject'] = h | 
 | >>> print msg.as_string() | 
 | Subject: =?iso-8859-1?q?p=F6stal?= | 
 |  | 
 |  | 
 | \end{verbatim} | 
 |  | 
 | Notice here how we wanted the \mailheader{Subject} field to contain a | 
 | non-\ASCII{} character?  We did this by creating a \class{Header} | 
 | instance and passing in the character set that the byte string was | 
 | encoded in.  When the subsequent \class{Message} instance was | 
 | flattened, the \mailheader{Subject} field was properly \rfc{2047} | 
 | encoded.  MIME-aware mail readers would show this header using the | 
 | embedded ISO-8859-1 character. | 
 |  | 
 | \versionadded{2.2.2} | 
 |  | 
 | Here is the \class{Header} class description: | 
 |  | 
 | \begin{classdesc}{Header}{\optional{s\optional{, charset\optional{, | 
 |     maxlinelen\optional{, header_name\optional{, continuation_ws\optional{, | 
 |     errors}}}}}}} | 
 | Create a MIME-compliant header that can contain strings in different | 
 | character sets. | 
 |  | 
 | Optional \var{s} is the initial header value.  If \code{None} (the | 
 | default), the initial header value is not set.  You can later append | 
 | to the header with \method{append()} method calls.  \var{s} may be a | 
 | byte string or a Unicode string, but see the \method{append()} | 
 | documentation for semantics. | 
 |  | 
 | Optional \var{charset} serves two purposes: it has the same meaning as | 
 | the \var{charset} argument to the \method{append()} method.  It also | 
 | sets the default character set for all subsequent \method{append()} | 
 | calls that omit the \var{charset} argument.  If \var{charset} is not | 
 | provided in the constructor (the default), the \code{us-ascii} | 
 | character set is used both as \var{s}'s initial charset and as the | 
 | default for subsequent \method{append()} calls. | 
 |  | 
 | The maximum line length can be specified explicit via | 
 | \var{maxlinelen}.  For splitting the first line to a shorter value (to | 
 | account for the field header which isn't included in \var{s}, | 
 | e.g. \mailheader{Subject}) pass in the name of the field in | 
 | \var{header_name}.  The default \var{maxlinelen} is 76, and the | 
 | default value for \var{header_name} is \code{None}, meaning it is not | 
 | taken into account for the first line of a long, split header. | 
 |  | 
 | Optional \var{continuation_ws} must be \rfc{2822}-compliant folding | 
 | whitespace, and is usually either a space or a hard tab character. | 
 | This character will be prepended to continuation lines. | 
 | \end{classdesc} | 
 |  | 
 | Optional \var{errors} is passed straight through to the | 
 | \method{append()} method. | 
 |  | 
 | \begin{methoddesc}[Header]{append}{s\optional{, charset\optional{, errors}}} | 
 | Append the string \var{s} to the MIME header. | 
 |  | 
 | Optional \var{charset}, if given, should be a \class{Charset} instance | 
 | (see \refmodule{email.Charset}) or the name of a character set, which | 
 | will be converted to a \class{Charset} instance.  A value of | 
 | \code{None} (the default) means that the \var{charset} given in the | 
 | constructor is used. | 
 |  | 
 | \var{s} may be a byte string or a Unicode string.  If it is a byte | 
 | string (i.e. \code{isinstance(s, str)} is true), then | 
 | \var{charset} is the encoding of that byte string, and a | 
 | \exception{UnicodeError} will be raised if the string cannot be | 
 | decoded with that character set. | 
 |  | 
 | If \var{s} is a Unicode string, then \var{charset} is a hint | 
 | specifying the character set of the characters in the string.  In this | 
 | case, when producing an \rfc{2822}-compliant header using \rfc{2047} | 
 | rules, the Unicode string will be encoded using the following charsets | 
 | in order: \code{us-ascii}, the \var{charset} hint, \code{utf-8}.  The | 
 | first character set to not provoke a \exception{UnicodeError} is used. | 
 |  | 
 | Optional \var{errors} is passed through to any \function{unicode()} or | 
 | \function{ustr.encode()} call, and defaults to ``strict''. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}[Header]{encode}{\optional{splitchars}} | 
 | Encode a message header into an RFC-compliant format, possibly | 
 | wrapping long lines and encapsulating non-\ASCII{} parts in base64 or | 
 | quoted-printable encodings.  Optional \var{splitchars} is a string | 
 | containing characters to split long ASCII lines on, in rough support | 
 | of \rfc{2822}'s \emph{highest level syntactic breaks}.  This doesn't | 
 | affect \rfc{2047} encoded lines. | 
 | \end{methoddesc} | 
 |  | 
 | The \class{Header} class also provides a number of methods to support | 
 | standard operators and built-in functions. | 
 |  | 
 | \begin{methoddesc}[Header]{__str__}{} | 
 | A synonym for \method{Header.encode()}.  Useful for | 
 | \code{str(aHeader)}. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}[Header]{__unicode__}{} | 
 | A helper for the built-in \function{unicode()} function.  Returns the | 
 | header as a Unicode string. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}[Header]{__eq__}{other} | 
 | This method allows you to compare two \class{Header} instances for equality. | 
 | \end{methoddesc} | 
 |  | 
 | \begin{methoddesc}[Header]{__ne__}{other} | 
 | This method allows you to compare two \class{Header} instances for inequality. | 
 | \end{methoddesc} | 
 |  | 
 | The \module{email.Header} module also provides the following | 
 | convenient functions. | 
 |  | 
 | \begin{funcdesc}{decode_header}{header} | 
 | Decode a message header value without converting the character set. | 
 | The header value is in \var{header}. | 
 |  | 
 | This function returns a list of \code{(decoded_string, charset)} pairs | 
 | containing each of the decoded parts of the header.  \var{charset} is | 
 | \code{None} for non-encoded parts of the header, otherwise a lower | 
 | case string containing the name of the character set specified in the | 
 | encoded string. | 
 |  | 
 | Here's an example: | 
 |  | 
 | \begin{verbatim} | 
 | >>> from email.Header import decode_header | 
 | >>> decode_header('=?iso-8859-1?q?p=F6stal?=') | 
 | [('p\\xf6stal', 'iso-8859-1')] | 
 | \end{verbatim} | 
 | \end{funcdesc} | 
 |  | 
 | \begin{funcdesc}{make_header}{decoded_seq\optional{, maxlinelen\optional{, | 
 |     header_name\optional{, continuation_ws}}}} | 
 | Create a \class{Header} instance from a sequence of pairs as returned | 
 | by \function{decode_header()}. | 
 |  | 
 | \function{decode_header()} takes a header value string and returns a | 
 | sequence of pairs of the format \code{(decoded_string, charset)} where | 
 | \var{charset} is the name of the character set. | 
 |  | 
 | This function takes one of those sequence of pairs and returns a | 
 | \class{Header} instance.  Optional \var{maxlinelen}, | 
 | \var{header_name}, and \var{continuation_ws} are as in the | 
 | \class{Header} constructor. | 
 | \end{funcdesc} |