| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \declaremodule{standard}{email.Utils} | 
					
						
							|  |  |  | \modulesynopsis{Miscellaneous email package utilities.} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-11-01 03:59:24 +00:00
										 |  |  | There are several useful utilities provided in the \module{email.Utils} | 
					
						
							|  |  |  | module: | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{quote}{str} | 
					
						
							|  |  |  | Return a new string with backslashes in \var{str} replaced by two | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | backslashes, and double quotes replaced by backslash-double quote. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \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 | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | field such as \mailheader{To} or \mailheader{Cc} -- into its constituent | 
					
						
							|  |  |  | \emph{realname} and \emph{email address} parts.  Returns a tuple of that | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | information, unless the parse fails, in which case a 2-tuple of | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \code{('', '')} is returned. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \begin{funcdesc}{formataddr}{pair} | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | The inverse of \method{parseaddr()}, this takes a 2-tuple of the form | 
					
						
							|  |  |  | \code{(realname, email_address)} and returns the string value suitable | 
					
						
							| 
									
										
										
										
											2001-09-26 22:21:52 +00:00
										 |  |  | for a \mailheader{To} or \mailheader{Cc} header.  If the first element of | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \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 | 
					
						
							| 
									
										
										
										
											2002-05-22 01:22:46 +00:00
										 |  |  | values as might be returned by \method{Message.get_all()}.  Here's a | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | simple example that gets all the recipients of a message: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | from email.Utils import getaddresses | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-10-22 20:53:45 +00:00
										 |  |  | tos = msg.get_all('to', []) | 
					
						
							|  |  |  | ccs = msg.get_all('cc', []) | 
					
						
							|  |  |  | resent_tos = msg.get_all('resent-to', []) | 
					
						
							|  |  |  | resent_ccs = msg.get_all('resent-cc', []) | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | all_recipients = getaddresses(tos + ccs + resent_tos + resent_ccs) | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | \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 | 
					
						
							| 
									
										
										
										
											2001-11-05 01:55:03 +00:00
										 |  |  | changes in daylight savings time, though not worth worrying about for | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | common use. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-10-11 13:53:08 +00:00
										 |  |  | \begin{funcdesc}{formatdate}{\optional{timeval\optional{, localtime}\optional{, usegmt}}} | 
					
						
							| 
									
										
										
										
											2002-10-01 04:33:16 +00:00
										 |  |  | Returns a date string as per \rfc{2822}, e.g.: | 
					
						
							| 
									
										
										
										
											2001-11-09 17:08:13 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | Fri, 09 Nov 2001 01:08:47 -0000 | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Optional \var{timeval} if given is a floating point time value as | 
					
						
							|  |  |  | accepted by \function{time.gmtime()} and \function{time.localtime()}, | 
					
						
							|  |  |  | otherwise the current time is used. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | Optional \var{localtime} is a flag that when \code{True}, interprets | 
					
						
							| 
									
										
										
										
											2001-11-09 17:08:13 +00:00
										 |  |  | \var{timeval}, and returns a date relative to the local timezone | 
					
						
							|  |  |  | instead of UTC, properly taking daylight savings time into account. | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | The default is \code{False} meaning UTC is used. | 
					
						
							| 
									
										
										
										
											2004-10-11 13:53:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Optional \var{usegmt} is a flag that when \code{True}, outputs a  | 
					
						
							|  |  |  | date string with the timezone as an ascii string \code{GMT}, rather | 
					
						
							|  |  |  | than a numeric \code{-0000}. This is needed for some protocols (such | 
					
						
							| 
									
										
										
										
											2005-07-17 11:47:46 +00:00
										 |  |  | as HTTP). This only applies when \var{localtime} is \code{False}. | 
					
						
							| 
									
										
										
										
											2005-07-17 15:34:58 +00:00
										 |  |  | \versionadded{2.4} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{make_msgid}{\optional{idstring}} | 
					
						
							|  |  |  | Returns a string suitable for an \rfc{2822}-compliant | 
					
						
							|  |  |  | \mailheader{Message-ID} header.  Optional \var{idstring} if given, is | 
					
						
							|  |  |  | a string used to strengthen the uniqueness of the message id. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{decode_rfc2231}{s} | 
					
						
							|  |  |  | Decode the string \var{s} according to \rfc{2231}. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{encode_rfc2231}{s\optional{, charset\optional{, language}}} | 
					
						
							|  |  |  | Encode the string \var{s} according to \rfc{2231}.  Optional | 
					
						
							|  |  |  | \var{charset} and \var{language}, if given is the character set name | 
					
						
							|  |  |  | and language name to use.  If neither is given, \var{s} is returned | 
					
						
							|  |  |  | as-is.  If \var{charset} is given but \var{language} is not, the | 
					
						
							|  |  |  | string is encoded using the empty string for \var{language}. | 
					
						
							| 
									
										
										
										
											2001-09-26 05:23:47 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-10-03 03:16:19 +00:00
										 |  |  | \begin{funcdesc}{collapse_rfc2231_value}{value\optional{, errors\optional{, | 
					
						
							|  |  |  |     fallback_charset}}} | 
					
						
							|  |  |  | When a header parameter is encoded in \rfc{2231} format, | 
					
						
							|  |  |  | \method{Message.get_param()} may return a 3-tuple containing the character | 
					
						
							|  |  |  | set, language, and value.  \function{collapse_rfc2231_value()} turns this into | 
					
						
							|  |  |  | a unicode string.  Optional \var{errors} is passed to the \var{errors} | 
					
						
							|  |  |  | argument of the built-in \function{unicode()} function; it defaults to | 
					
						
							|  |  |  | \code{replace}.  Optional \var{fallback_charset} specifies the character set | 
					
						
							|  |  |  | to use if the one in the \rfc{2231} header is not known by Python; it defaults | 
					
						
							|  |  |  | to \code{us-ascii}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For convenience, if the \var{value} passed to | 
					
						
							|  |  |  | \function{collapse_rfc2231_value()} is not a tuple, it should be a string and | 
					
						
							|  |  |  | it is returned unquoted. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | \begin{funcdesc}{decode_params}{params} | 
					
						
							|  |  |  | Decode parameters list according to \rfc{2231}.  \var{params} is a | 
					
						
							|  |  |  | sequence of 2-tuples containing elements of the form | 
					
						
							|  |  |  | \code{(content-type, string-value)}. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-10-03 03:16:19 +00:00
										 |  |  | \versionchanged[The \function{dump_address_pair()} function has been removed; | 
					
						
							|  |  |  | use \function{formataddr()} instead.]{2.4} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-10-03 03:16:19 +00:00
										 |  |  | \versionchanged[The \function{decode()} function has been removed; use the | 
					
						
							|  |  |  | \method{Header.decode_header()} method instead.]{2.4} | 
					
						
							| 
									
										
										
										
											2002-10-01 01:05:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-10-03 03:16:19 +00:00
										 |  |  | \versionchanged[The \function{encode()} function has been removed; use the | 
					
						
							|  |  |  | \method{Header.encode()} method instead.]{2.4} |