1 \declaremodule{standard
}{email.Utils
}
2 \modulesynopsis{Miscellaneous email package utilities.
}
4 There are several useful utilities provided with the
\module{email
}
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{(None, None)
} is returned.
27 \begin{funcdesc
}{dump_address_pair
}{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.getall()
}. 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
}{decode
}{s
}
52 This method decodes a string according to the rules in
\rfc{2047}. It
53 returns the decoded string as a Python unicode string.
56 \begin{funcdesc
}{encode
}{s
\optional{, charset
\optional{, encoding
}}}
57 This method encodes a string according to the rules in
\rfc{2047}. It
58 is not actually the inverse of
\function{decode()
} since it doesn't
59 handle multiple character sets or multiple string parts needing
60 encoding. In fact, the input string
\var{s
} must already be encoded
61 in the
\var{charset
} character set (Python can't reliably guess what
62 character set a string might be encoded in). The default
63 \var{charset
} is
\samp{iso-
8859-
1}.
65 \var{encoding
} must be either the letter
\character{q
} for
66 Quoted-Printable or
\character{b
} for Base64 encoding. If
67 neither, a
\exception{ValueError
} is raised. Both the
\var{charset
} and
68 the
\var{encoding
} strings are case-insensitive, and coerced to lower
69 case in the returned string.
72 \begin{funcdesc
}{parsedate
}{date
}
73 Attempts to parse a date according to the rules in
\rfc{2822}.
74 however, some mailers don't follow that format as specified, so
75 \function{parsedate()
} tries to guess correctly in such cases.
76 \var{date
} is a string containing an
\rfc{2822} date, such as
77 \code{"Mon,
20 Nov
1995 19:
12:
08 -
0500"
}. If it succeeds in parsing
78 the date,
\function{parsedate()
} returns a
9-tuple that can be passed
79 directly to
\function{time.mktime()
}; otherwise
\code{None
} will be
80 returned. Note that fields
6,
7, and
8 of the result tuple are not
84 \begin{funcdesc
}{parsedate_tz
}{date
}
85 Performs the same function as
\function{parsedate()
}, but returns
86 either
\code{None
} or a
10-tuple; the first
9 elements make up a tuple
87 that can be passed directly to
\function{time.mktime()
}, and the tenth
88 is the offset of the date's timezone from UTC (which is the official
89 term for Greenwich Mean Time)
\footnote{Note that the sign of the timezone
90 offset is the opposite of the sign of the
\code{time.timezone
}
91 variable for the same timezone; the latter variable follows the
92 \POSIX{} standard while this module follows
\rfc{2822}.
}. If the input
93 string has no timezone, the last element of the tuple returned is
94 \code{None
}. Note that fields
6,
7, and
8 of the result tuple are not
98 \begin{funcdesc
}{mktime_tz
}{tuple
}
99 Turn a
10-tuple as returned by
\function{parsedate_tz()
} into a UTC
100 timestamp. It the timezone item in the tuple is
\code{None
}, assume
101 local time. Minor deficiency:
\function{mktime_tz()
} interprets the
102 first
8 elements of
\var{tuple
} as a local time and then compensates
103 for the timezone difference. This may yield a slight error around
104 changes in daylight savings time, though not worth worrying about for
108 \begin{funcdesc
}{formatdate
}{\optional{timeval
\optional{, localtime
}}}
109 Returns a date string as per Internet standard
\rfc{2822}, e.g.:
112 Fri,
09 Nov
2001 01:
08:
47 -
0000
115 Optional
\var{timeval
} if given is a floating point time value as
116 accepted by
\function{time.gmtime()
} and
\function{time.localtime()
},
117 otherwise the current time is used.
119 Optional
\var{localtime
} is a flag that when true, interprets
120 \var{timeval
}, and returns a date relative to the local timezone
121 instead of UTC, properly taking daylight savings time into account.