18.1.9. email.utils :杂项实用程序

There are several useful utilities provided in the email.utils 模块:

email.utils. quote ( str )

Return a new string with backslashes in str replaced by two backslashes, and double quotes replaced by backslash-double quote.

email.utils. unquote ( str )

返回新的字符串,其是 unquoted 版本的 str 。若 str ends and begins with double quotes, they are stripped off. Likewise if str ends and begins with angle brackets, they are stripped off.

email.utils. parseaddr ( address )

Parse address – which should be the value of some address-containing field such as or Cc – into its constituent realname and email address parts. Returns a tuple of that information, unless the parse fails, in which case a 2-tuple of ('', '') 被返回。

email.utils. formataddr ( pair )

parseaddr() , this takes a 2-tuple of the form (realname, email_address) and returns the string value suitable for a or Cc header. If the first element of pair is false, then the second element is returned unmodified.

email.utils. getaddresses ( fieldvalues )

This method returns a list of 2-tuples of the form returned by parseaddr() . fieldvalues is a sequence of header field values as might be returned by Message.get_all . Here’s a simple example that gets all the recipients of a message:

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)
						
email.utils. 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 parsedate() tries to guess correctly in such cases. date is a string containing an RFC 2822 date, such as "Mon, 20 Nov 1995 19:12:08 -0500" . If it succeeds in parsing the date, parsedate() returns a 9-tuple that can be passed directly to time.mktime() ;否则 None will be returned. Note that indexes 6, 7, and 8 of the result tuple are not usable.

email.utils. parsedate_tz ( date )

Performs the same function as parsedate() , but returns either None or a 10-tuple; the first 9 elements make up a tuple that can be passed directly to time.mktime() , and the tenth is the offset of the date’s timezone from UTC (which is the official term for Greenwich Mean Time) [1] . If the input string has no timezone, the last element of the tuple returned is None . Note that indexes 6, 7, and 8 of the result tuple are not usable.

email.utils. mktime_tz ( tuple )

Turn a 10-tuple as returned by parsedate_tz() into a UTC timestamp (seconds since the Epoch). If the timezone item in the tuple is None , assume local time.

email.utils. formatdate ( [timeval[, localtime][, usegmt]] )

返回日期字符串按每 RFC 2822 ,如:

Fri, 09 Nov 2001 01:08:47 -0000
						

可选 timeval if given is a floating point time value as accepted by time.gmtime() and time.localtime() ,否则使用当前时间。

可选 localtime is a flag that when True , interprets timeval , and returns a date relative to the local timezone instead of UTC, properly taking daylight savings time into account. The default is False meaning UTC is used.

可选 usegmt is a flag that when True , outputs a date string with the timezone as an ascii string GMT , rather than a numeric -0000 . This is needed for some protocols (such as HTTP). This only applies when localtime is False 。默认为 False .

2.4 版新增。

email.utils. make_msgid ( [ idstring ] )

Returns a string suitable for an RFC 2822 -compliant Message-ID header. Optional idstring if given, is a string used to strengthen the uniqueness of the message id.

email.utils. decode_rfc2231 ( s )

解码字符串 s 根据 RFC 2231 .

email.utils. encode_rfc2231 ( s [ , charset [ , 语言 ] ] )

编码字符串 s 根据 RFC 2231 。可选 charset and 语言 , if given is the character set name and language name to use. If neither is given, s is returned as-is. If charset is given but 语言 is not, the string is encoded using the empty string for 语言 .

email.utils. collapse_rfc2231_value ( value [ , errors [ , fallback_charset ] ] )

当编码头参数按 RFC 2231 格式, Message.get_param may return a 3-tuple containing the character set, language, and value. collapse_rfc2231_value() turns this into a unicode string. Optional errors 被传递给 errors argument of the built-in unicode() function; it defaults to replace 。可选 fallback_charset specifies the character set to use if the one in the RFC 2231 header is not known by Python; it defaults to us-ascii .

为方便起见,若 value passed to collapse_rfc2231_value() is not a tuple, it should be a string and it is returned unquoted.

email.utils. decode_params ( params )

Decode parameters list according to RFC 2231 . params is a sequence of 2-tuples containing elements of the form (content-type, string-value) .

2.4 版改变: The dump_address_pair() function has been removed; use formataddr() 代替。

2.4 版改变: The decode() function has been removed; use the Header.decode_header method instead.

2.4 版改变: The encode() function has been removed; use the Header.encode method instead.

脚注

[1] Note that the sign of the timezone offset is the opposite of the sign of the time.timezone variable for the same timezone; the latter variable follows the POSIX standard while this module follows RFC 2822 .

上一话题

18.1.8. email.errors :异常和缺陷类

下一话题

18.1.10. email.iterators :迭代器

本页