在线文档教程
Python

email.utils: Miscellaneous utilities

email.utils: Miscellaneous utilities

email.utils模块中提供了几个有用的实用程序:

email.utils.quote(str)

str中的反斜杠替换为两个反斜杠的新字符串,并将双引号替换为反斜杠双引号。

email.utils.unquote(str)

返回一个不带引号str的新字符串。如果str结束并以双引号开头,则会被剥离。同样,如果str结束并以尖括号开始,它们将被剥离。

email.utils.parseaddr(address)

解析地址 - 应该是某个包含地址的字段(例如“ 收件人”或“ 抄送”)的值,并将其解析为其真实姓名电子邮件地址部分。返回该信息的元组,除非解析失败,在这种情况下('', '')返回2元组。

email.utils.formataddr(pair)

与此相反parseaddr(),这需要表单的2元组(realname, email_address)并返回适合于ToCc标题的字符串值。如果pair的第一个元素为false,则第二个元素将不加修改地返回。

email.utils.getaddresses(fieldvalues)

此方法返回由返回的表单的2元组列表parseaddr()fieldvalues是可能返回的一系列头字段值Message.get_all。下面是一个简单的例子,它可以获取消息的所有收件人:

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)

尝试根据RFC 2822中的规则解析日期。但是,一些邮件程序不遵循指定的格式,因此parsedate()在这种情况下尝试正确猜测。date是一个包含RFC 2822日期的字符串,例如"Mon, 20 Nov 1995 19:12:08 -0500"。如果成功解析日期,则parsedate()返回可直接传递给的9元组time.mktime( 否则None将被退回。请注意,结果元组的索引6,7和8不可用。

email.utils.parsedate_tz(date)

执行与之相同的功能parsedate(),但返回一个None或一个10元组; 前9个元素组成一个可以直接传递的元组,time.mktime()第十个元素是日期时区与UTC(这是格林威治标准时间的正式期限)[1]的偏移量。如果输入字符串没有时区,则返回的元组的最后一个元素是None。请注意,结果元组的索引6,7和8不可用。

email.utils.mktime_tz(tuple)

将返回的10元组parsedate_tz()转换为UTC时间戳(自Epoch以来的秒数)。如果元组中的时区项目是None假设当地时间。

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

根据RFC 2822返回日期字符串,例如:

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

可选的timeval如果给定的是作为接受一个浮点时间值time.gmtime()time.localtime(),否则就使用当前时间。

可选本地时间是一个标志,当True,解释timeval中,并返回相对于本地时区而不是UTC,适当服用夏令时考虑的日期。默认值False是使用UTC。

可选的usegmt是一个标志,当True输出带有时区的日期字符串作为ascii字符串时GMT,而不是数字-0000。这对于某些协议(如HTTP)是必需的。这仅适用于本地时间False。默认是False

2.4版本中的新功能。

email.utils.make_msgid([idstring])

返回适合符合RFC 2822Message-ID标头的字符串。可选的idstring(如果给出)是用于加强消息ID唯一性的字符串。

email.utils.decode_rfc2231(s)

解码字符串小号根据RFC 2231

email.utils.encode_rfc2231(s[, charset[, language]])

编码字符串小号根据RFC 2231。可选的字符集语言(如果给出)是要使用的字符集名称和语言名称。如果两者都没有给出,则s按原样返回。如果给出字符集语言不是,则使用空字符串对语言进行编码。

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

当标题参数以RFC 2231格式编码时,Message.get_param可能会返回包含字符集,语言和值的3元组。collapse_rfc2231_value()将其变成一个unicode字符串。可选错误传递给内置函数的错误参数unicode( 它默认为replace。可选fallback_charset指定要使用的字符集,如果RFC 2231标头中的标头未被Python识别; 它默认为us-ascii。

为了方便起见,如果传递的collapse_rfc2231_value()不是元组,它应该是一个字符串,并且不加引号就返回。

email.utils.decode_params(params)

根据RFC 2231解码参数列表。params是包含表单元素的2元组序列(content-type, string-value)

在版本2.4中更改:该dump_address_pair()功能已被删除; formataddr()改为使用。

在版本2.4中更改:该decode()功能已被删除; Header.decode_header改为使用该方法。

在版本2.4中更改:该encode()功能已被删除; Header.encode改为使用该方法。

1请注意,时区偏移的符号与同一时区的time.timezone变量的符号相反; 后一个变量遵循POSIX标准,而该模块遵循RFC 2822。