blob: 491a2b9d0ab8f69420b23aaf43bb953ba292d792 [file] [log] [blame]
Barry Warsaw5e634632001-09-26 05:23:47 +00001\declaremodule{standard}{email.Utils}
2\modulesynopsis{Miscellaneous email package utilities.}
Barry Warsaw5e634632001-09-26 05:23:47 +00003
Barry Warsaw87d6fc52004-11-01 03:59:24 +00004There are several useful utilities provided in the \module{email.Utils}
5module:
Barry Warsaw5e634632001-09-26 05:23:47 +00006
7\begin{funcdesc}{quote}{str}
8Return a new string with backslashes in \var{str} replaced by two
Barry Warsaw5db478f2002-10-01 04:33:16 +00009backslashes, and double quotes replaced by backslash-double quote.
Barry Warsaw5e634632001-09-26 05:23:47 +000010\end{funcdesc}
11
12\begin{funcdesc}{unquote}{str}
13Return a new string which is an \emph{unquoted} version of \var{str}.
14If \var{str} ends and begins with double quotes, they are stripped
15off. Likewise if \var{str} ends and begins with angle brackets, they
16are stripped off.
17\end{funcdesc}
18
19\begin{funcdesc}{parseaddr}{address}
20Parse address -- which should be the value of some address-containing
Barry Warsawc5f8fe32001-09-26 22:21:52 +000021field such as \mailheader{To} or \mailheader{Cc} -- into its constituent
22\emph{realname} and \emph{email address} parts. Returns a tuple of that
Barry Warsaw5e634632001-09-26 05:23:47 +000023information, unless the parse fails, in which case a 2-tuple of
Barry Warsaw5b9da892002-10-01 01:05:52 +000024\code{('', '')} is returned.
Barry Warsaw5e634632001-09-26 05:23:47 +000025\end{funcdesc}
26
Barry Warsaw5b9da892002-10-01 01:05:52 +000027\begin{funcdesc}{formataddr}{pair}
Barry Warsaw5e634632001-09-26 05:23:47 +000028The inverse of \method{parseaddr()}, this takes a 2-tuple of the form
29\code{(realname, email_address)} and returns the string value suitable
Barry Warsawc5f8fe32001-09-26 22:21:52 +000030for a \mailheader{To} or \mailheader{Cc} header. If the first element of
Barry Warsaw5e634632001-09-26 05:23:47 +000031\var{pair} is false, then the second element is returned unmodified.
32\end{funcdesc}
33
34\begin{funcdesc}{getaddresses}{fieldvalues}
35This method returns a list of 2-tuples of the form returned by
36\code{parseaddr()}. \var{fieldvalues} is a sequence of header field
Barry Warsawc421ad42002-05-22 01:22:46 +000037values as might be returned by \method{Message.get_all()}. Here's a
Barry Warsaw5e634632001-09-26 05:23:47 +000038simple example that gets all the recipients of a message:
39
40\begin{verbatim}
41from email.Utils import getaddresses
42
Barry Warsawd05e0512001-10-22 20:53:45 +000043tos = msg.get_all('to', [])
44ccs = msg.get_all('cc', [])
45resent_tos = msg.get_all('resent-to', [])
46resent_ccs = msg.get_all('resent-cc', [])
Barry Warsaw5e634632001-09-26 05:23:47 +000047all_recipients = getaddresses(tos + ccs + resent_tos + resent_ccs)
48\end{verbatim}
49\end{funcdesc}
50
Barry Warsaw5e634632001-09-26 05:23:47 +000051\begin{funcdesc}{parsedate}{date}
52Attempts to parse a date according to the rules in \rfc{2822}.
53however, some mailers don't follow that format as specified, so
54\function{parsedate()} tries to guess correctly in such cases.
55\var{date} is a string containing an \rfc{2822} date, such as
56\code{"Mon, 20 Nov 1995 19:12:08 -0500"}. If it succeeds in parsing
57the date, \function{parsedate()} returns a 9-tuple that can be passed
58directly to \function{time.mktime()}; otherwise \code{None} will be
59returned. Note that fields 6, 7, and 8 of the result tuple are not
60usable.
61\end{funcdesc}
62
63\begin{funcdesc}{parsedate_tz}{date}
64Performs the same function as \function{parsedate()}, but returns
65either \code{None} or a 10-tuple; the first 9 elements make up a tuple
66that can be passed directly to \function{time.mktime()}, and the tenth
67is the offset of the date's timezone from UTC (which is the official
68term for Greenwich Mean Time)\footnote{Note that the sign of the timezone
69offset is the opposite of the sign of the \code{time.timezone}
70variable for the same timezone; the latter variable follows the
71\POSIX{} standard while this module follows \rfc{2822}.}. If the input
72string has no timezone, the last element of the tuple returned is
73\code{None}. Note that fields 6, 7, and 8 of the result tuple are not
74usable.
75\end{funcdesc}
76
77\begin{funcdesc}{mktime_tz}{tuple}
78Turn a 10-tuple as returned by \function{parsedate_tz()} into a UTC
79timestamp. It the timezone item in the tuple is \code{None}, assume
80local time. Minor deficiency: \function{mktime_tz()} interprets the
81first 8 elements of \var{tuple} as a local time and then compensates
82for the timezone difference. This may yield a slight error around
Andrew M. Kuchling43dc1fc2001-11-05 01:55:03 +000083changes in daylight savings time, though not worth worrying about for
Barry Warsaw5e634632001-09-26 05:23:47 +000084common use.
85\end{funcdesc}
86
Anthony Baxter3dd9e462004-10-11 13:53:08 +000087\begin{funcdesc}{formatdate}{\optional{timeval\optional{, localtime}\optional{, usegmt}}}
Barry Warsaw5db478f2002-10-01 04:33:16 +000088Returns a date string as per \rfc{2822}, e.g.:
Barry Warsaw3b0c82a2001-11-09 17:08:13 +000089
90\begin{verbatim}
91Fri, 09 Nov 2001 01:08:47 -0000
92\end{verbatim}
93
94Optional \var{timeval} if given is a floating point time value as
95accepted by \function{time.gmtime()} and \function{time.localtime()},
96otherwise the current time is used.
97
Barry Warsaw5b9da892002-10-01 01:05:52 +000098Optional \var{localtime} is a flag that when \code{True}, interprets
Barry Warsaw3b0c82a2001-11-09 17:08:13 +000099\var{timeval}, and returns a date relative to the local timezone
100instead of UTC, properly taking daylight savings time into account.
Barry Warsaw5b9da892002-10-01 01:05:52 +0000101The default is \code{False} meaning UTC is used.
Anthony Baxter3dd9e462004-10-11 13:53:08 +0000102
103Optional \var{usegmt} is a flag that when \code{True}, outputs a
104date string with the timezone as an ascii string \code{GMT}, rather
105than a numeric \code{-0000}. This is needed for some protocols (such
Skip Montanarobbf74f92005-07-17 11:47:46 +0000106as HTTP). This only applies when \var{localtime} is \code{False}.
Skip Montanaro7a7b3502005-07-17 15:34:58 +0000107\versionadded{2.4}
Barry Warsaw5e634632001-09-26 05:23:47 +0000108\end{funcdesc}
Barry Warsaw5b9da892002-10-01 01:05:52 +0000109
110\begin{funcdesc}{make_msgid}{\optional{idstring}}
111Returns a string suitable for an \rfc{2822}-compliant
112\mailheader{Message-ID} header. Optional \var{idstring} if given, is
113a string used to strengthen the uniqueness of the message id.
114\end{funcdesc}
115
116\begin{funcdesc}{decode_rfc2231}{s}
117Decode the string \var{s} according to \rfc{2231}.
118\end{funcdesc}
119
120\begin{funcdesc}{encode_rfc2231}{s\optional{, charset\optional{, language}}}
121Encode the string \var{s} according to \rfc{2231}. Optional
122\var{charset} and \var{language}, if given is the character set name
123and language name to use. If neither is given, \var{s} is returned
124as-is. If \var{charset} is given but \var{language} is not, the
125string is encoded using the empty string for \var{language}.
126\end{funcdesc}
127
Barry Warsawbb113862004-10-03 03:16:19 +0000128\begin{funcdesc}{collapse_rfc2231_value}{value\optional{, errors\optional{,
129 fallback_charset}}}
130When a header parameter is encoded in \rfc{2231} format,
131\method{Message.get_param()} may return a 3-tuple containing the character
132set, language, and value. \function{collapse_rfc2231_value()} turns this into
133a unicode string. Optional \var{errors} is passed to the \var{errors}
134argument of the built-in \function{unicode()} function; it defaults to
135\code{replace}. Optional \var{fallback_charset} specifies the character set
136to use if the one in the \rfc{2231} header is not known by Python; it defaults
137to \code{us-ascii}.
138
139For convenience, if the \var{value} passed to
140\function{collapse_rfc2231_value()} is not a tuple, it should be a string and
141it is returned unquoted.
142\end{funcdesc}
143
Barry Warsaw5b9da892002-10-01 01:05:52 +0000144\begin{funcdesc}{decode_params}{params}
145Decode parameters list according to \rfc{2231}. \var{params} is a
146sequence of 2-tuples containing elements of the form
147\code{(content-type, string-value)}.
148\end{funcdesc}
149
Barry Warsawbb113862004-10-03 03:16:19 +0000150\versionchanged[The \function{dump_address_pair()} function has been removed;
Georg Brandla635fbb2006-01-15 07:55:35 +0000151use \function{formataddr()} instead]{2.4}
Barry Warsaw5b9da892002-10-01 01:05:52 +0000152
Barry Warsawbb113862004-10-03 03:16:19 +0000153\versionchanged[The \function{decode()} function has been removed; use the
Georg Brandla635fbb2006-01-15 07:55:35 +0000154\method{Header.decode_header()} method instead]{2.4}
Barry Warsaw5b9da892002-10-01 01:05:52 +0000155
Barry Warsawbb113862004-10-03 03:16:19 +0000156\versionchanged[The \function{encode()} function has been removed; use the
Georg Brandla635fbb2006-01-15 07:55:35 +0000157\method{Header.encode()} method instead]{2.4}