mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			113 lines
		
	
	
	
		
			4.9 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
	
		
			4.9 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
\declaremodule{standard}{email.Utils}
 | 
						|
\modulesynopsis{Miscellaneous email package utilities.}
 | 
						|
 | 
						|
There are several useful utilities provided with the \module{email}
 | 
						|
package.
 | 
						|
 | 
						|
\begin{funcdesc}{quote}{str}
 | 
						|
Return a new string with backslashes in \var{str} replaced by two
 | 
						|
backslashes and double quotes replaced by backslash-double quote.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{unquote}{str}
 | 
						|
Return a new string which is an \emph{unquoted} version of \var{str}.
 | 
						|
If \var{str} ends and begins with double quotes, they are stripped
 | 
						|
off.  Likewise if \var{str} ends and begins with angle brackets, they
 | 
						|
are stripped off.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{parseaddr}{address}
 | 
						|
Parse address -- which should be the value of some address-containing
 | 
						|
field such as \mailheader{To} or \mailheader{Cc} -- into its constituent
 | 
						|
\emph{realname} and \emph{email address} parts.  Returns a tuple of that
 | 
						|
information, unless the parse fails, in which case a 2-tuple of
 | 
						|
\code{(None, None)} is returned.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{dump_address_pair}{pair}
 | 
						|
The inverse of \method{parseaddr()}, this takes a 2-tuple of the form
 | 
						|
\code{(realname, email_address)} and returns the string value suitable
 | 
						|
for a \mailheader{To} or \mailheader{Cc} header.  If the first element of
 | 
						|
\var{pair} is false, then the second element is returned unmodified.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{getaddresses}{fieldvalues}
 | 
						|
This method returns a list of 2-tuples of the form returned by
 | 
						|
\code{parseaddr()}.  \var{fieldvalues} is a sequence of header field
 | 
						|
values as might be returned by \method{Message.getall()}.  Here's a
 | 
						|
simple example that gets all the recipients of a message:
 | 
						|
 | 
						|
\begin{verbatim}
 | 
						|
from email.Utils import getaddresses
 | 
						|
 | 
						|
tos = msg.get_all('to')
 | 
						|
ccs = msg.get_all('cc')
 | 
						|
resent_tos = msg.get_all('resent-to')
 | 
						|
resent_ccs = msg.get_all('resent-cc')
 | 
						|
all_recipients = getaddresses(tos + ccs + resent_tos + resent_ccs)
 | 
						|
\end{verbatim}
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{decode}{s}
 | 
						|
This method decodes a string according to the rules in \rfc{2047}.  It
 | 
						|
returns the decoded string as a Python unicode string.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{encode}{s\optional{, charset\optional{, encoding}}}
 | 
						|
This method encodes a string according to the rules in \rfc{2047}.  It
 | 
						|
is not actually the inverse of \function{decode()} since it doesn't
 | 
						|
handle multiple character sets or multiple string parts needing
 | 
						|
encoding.  In fact, the input string \var{s} must already be encoded
 | 
						|
in the \var{charset} character set (Python can't reliably guess what
 | 
						|
character set a string might be encoded in).  The default
 | 
						|
\var{charset} is \samp{iso-8859-1}.
 | 
						|
 | 
						|
\var{encoding} must be either the letter \character{q} for
 | 
						|
Quoted-Printable or \character{b} for Base64 encoding.  If
 | 
						|
neither, a \exception{ValueError} is raised.  Both the \var{charset} and
 | 
						|
the \var{encoding} strings are case-insensitive, and coerced to lower
 | 
						|
case in the returned string.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{parsedate}{date}
 | 
						|
Attempts to parse a date according to the rules in \rfc{2822}.
 | 
						|
however, some mailers don't follow that format as specified, so
 | 
						|
\function{parsedate()} tries to guess correctly in such cases. 
 | 
						|
\var{date} is a string containing an \rfc{2822} date, such as 
 | 
						|
\code{"Mon, 20 Nov 1995 19:12:08 -0500"}.  If it succeeds in parsing
 | 
						|
the date, \function{parsedate()} returns a 9-tuple that can be passed
 | 
						|
directly to \function{time.mktime()}; otherwise \code{None} will be
 | 
						|
returned.  Note that fields 6, 7, and 8 of the result tuple are not
 | 
						|
usable.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{parsedate_tz}{date}
 | 
						|
Performs the same function as \function{parsedate()}, but returns
 | 
						|
either \code{None} or a 10-tuple; the first 9 elements make up a tuple
 | 
						|
that can be passed directly to \function{time.mktime()}, and the tenth
 | 
						|
is the offset of the date's timezone from UTC (which is the official
 | 
						|
term for Greenwich Mean Time)\footnote{Note that the sign of the timezone
 | 
						|
offset is the opposite of the sign of the \code{time.timezone}
 | 
						|
variable for the same timezone; the latter variable follows the
 | 
						|
\POSIX{} standard while this module follows \rfc{2822}.}.  If the input
 | 
						|
string has no timezone, the last element of the tuple returned is
 | 
						|
\code{None}.  Note that fields 6, 7, and 8 of the result tuple are not
 | 
						|
usable.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{mktime_tz}{tuple}
 | 
						|
Turn a 10-tuple as returned by \function{parsedate_tz()} into a UTC
 | 
						|
timestamp.  It the timezone item in the tuple is \code{None}, assume
 | 
						|
local time.  Minor deficiency: \function{mktime_tz()} interprets the
 | 
						|
first 8 elements of \var{tuple} as a local time and then compensates
 | 
						|
for the timezone difference.  This may yield a slight error around
 | 
						|
changes in daylight savings time, though not worth worring about for
 | 
						|
common use.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{formatdate}{\optional{timeval}}
 | 
						|
Returns the time formatted as per Internet standards \rfc{2822}
 | 
						|
and updated by \rfc{1123}.  If \var{timeval} is provided, then it
 | 
						|
should be a floating point time value as expected by
 | 
						|
\method{time.gmtime()}, otherwise the current time is used.
 | 
						|
\end{funcdesc}
 |