1 \declaremodule{standard
}{email.Utils
}
2 \modulesynopsis{Miscellaneous email package utilities.
}
4 There are several useful utilities provided in the
\module{email.Utils
}
7 \begin{funcdesc
}{quote
}{str
}
8 Return a new string with backslashes in
\var{str
} replaced by two
9 backslashes, and double quotes replaced by backslash-double quote.
12 \begin{funcdesc
}{unquote
}{str
}
13 Return a new string which is an
\emph{unquoted
} version of
\var{str
}.
14 If
\var{str
} ends and begins with double quotes, they are stripped
15 off. Likewise if
\var{str
} ends and begins with angle brackets, they
19 \begin{funcdesc
}{parseaddr
}{address
}
20 Parse address -- which should be the value of some address-containing
21 field such as
\mailheader{To
} or
\mailheader{Cc
} -- into its constituent
22 \emph{realname
} and
\emph{email address
} parts. Returns a tuple of that
23 information, unless the parse fails, in which case a
2-tuple of
24 \code{('', '')
} is returned.
27 \begin{funcdesc
}{formataddr
}{pair
}
28 The inverse of
\method{parseaddr()
}, this takes a
2-tuple of the form
29 \code{(realname, email_address)
} and returns the string value suitable
30 for a
\mailheader{To
} or
\mailheader{Cc
} header. If the first element of
31 \var{pair
} is false, then the second element is returned unmodified.
34 \begin{funcdesc
}{getaddresses
}{fieldvalues
}
35 This method returns a list of
2-tuples of the form returned by
36 \code{parseaddr()
}.
\var{fieldvalues
} is a sequence of header field
37 values as might be returned by
\method{Message.get_all()
}. Here's a
38 simple example that gets all the recipients of a message:
41 from email.Utils import getaddresses
43 tos = msg.get_all('to',
[])
44 ccs = msg.get_all('cc',
[])
45 resent_tos = msg.get_all('resent-to',
[])
46 resent_ccs = msg.get_all('resent-cc',
[])
47 all_recipients = getaddresses(tos + ccs + resent_tos + resent_ccs)
51 \begin{funcdesc
}{parsedate
}{date
}
52 Attempts to parse a date according to the rules in
\rfc{2822}.
53 however, 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
57 the date,
\function{parsedate()
} returns a
9-tuple that can be passed
58 directly to
\function{time.mktime()
}; otherwise
\code{None
} will be
59 returned. Note that fields
6,
7, and
8 of the result tuple are not
63 \begin{funcdesc
}{parsedate_tz
}{date
}
64 Performs the same function as
\function{parsedate()
}, but returns
65 either
\code{None
} or a
10-tuple; the first
9 elements make up a tuple
66 that can be passed directly to
\function{time.mktime()
}, and the tenth
67 is the offset of the date's timezone from UTC (which is the official
68 term for Greenwich Mean Time)
\footnote{Note that the sign of the timezone
69 offset is the opposite of the sign of the
\code{time.timezone
}
70 variable for the same timezone; the latter variable follows the
71 \POSIX{} standard while this module follows
\rfc{2822}.
}. If the input
72 string 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
77 \begin{funcdesc
}{mktime_tz
}{tuple
}
78 Turn a
10-tuple as returned by
\function{parsedate_tz()
} into a UTC
79 timestamp. It the timezone item in the tuple is
\code{None
}, assume
80 local time. Minor deficiency:
\function{mktime_tz()
} interprets the
81 first
8 elements of
\var{tuple
} as a local time and then compensates
82 for the timezone difference. This may yield a slight error around
83 changes in daylight savings time, though not worth worrying about for
87 \begin{funcdesc
}{formatdate
}{\optional{timeval
\optional{, localtime
}\optional{, usegmt
}}}
88 Returns a date string as per
\rfc{2822}, e.g.:
91 Fri,
09 Nov
2001 01:
08:
47 -
0000
94 Optional
\var{timeval
} if given is a floating point time value as
95 accepted by
\function{time.gmtime()
} and
\function{time.localtime()
},
96 otherwise the current time is used.
98 Optional
\var{localtime
} is a flag that when
\code{True
}, interprets
99 \var{timeval
}, and returns a date relative to the local timezone
100 instead of UTC, properly taking daylight savings time into account.
101 The default is
\code{False
} meaning UTC is used.
103 Optional
\var{usegmt
} is a flag that when
\code{True
}, outputs a
104 date string with the timezone as an ascii string
\code{GMT
}, rather
105 than a numeric
\code{-
0000}. This is needed for some protocols (such
106 as HTTP). This only applies when
\var{localtime
} is
\code{False
}
109 \begin{funcdesc
}{make_msgid
}{\optional{idstring
}}
110 Returns a string suitable for an
\rfc{2822}-compliant
111 \mailheader{Message-ID
} header. Optional
\var{idstring
} if given, is
112 a string used to strengthen the uniqueness of the message id.
115 \begin{funcdesc
}{decode_rfc2231
}{s
}
116 Decode the string
\var{s
} according to
\rfc{2231}.
119 \begin{funcdesc
}{encode_rfc2231
}{s
\optional{, charset
\optional{, language
}}}
120 Encode the string
\var{s
} according to
\rfc{2231}. Optional
121 \var{charset
} and
\var{language
}, if given is the character set name
122 and language name to use. If neither is given,
\var{s
} is returned
123 as-is. If
\var{charset
} is given but
\var{language
} is not, the
124 string is encoded using the empty string for
\var{language
}.
127 \begin{funcdesc
}{collapse_rfc2231_value
}{value
\optional{, errors
\optional{,
129 When a header parameter is encoded in
\rfc{2231} format,
130 \method{Message.get_param()
} may return a
3-tuple containing the character
131 set, language, and value.
\function{collapse_rfc2231_value()
} turns this into
132 a unicode string. Optional
\var{errors
} is passed to the
\var{errors
}
133 argument of the built-in
\function{unicode()
} function; it defaults to
134 \code{replace
}. Optional
\var{fallback_charset
} specifies the character set
135 to use if the one in the
\rfc{2231} header is not known by Python; it defaults
138 For convenience, if the
\var{value
} passed to
139 \function{collapse_rfc2231_value()
} is not a tuple, it should be a string and
140 it is returned unquoted.
143 \begin{funcdesc
}{decode_params
}{params
}
144 Decode parameters list according to
\rfc{2231}.
\var{params
} is a
145 sequence of
2-tuples containing elements of the form
146 \code{(content-type, string-value)
}.
149 \versionchanged[The
\function{dump_address_pair()
} function has been removed;
150 use
\function{formataddr()
} instead.
]{2.4}
152 \versionchanged[The
\function{decode()
} function has been removed; use the
153 \method{Header.decode_header()
} method instead.
]{2.4}
155 \versionchanged[The
\function{encode()
} function has been removed; use the
156 \method{Header.encode()
} method instead.
]{2.4}