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)
并返回适合于To
或Cc
标题的字符串值。如果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 2822
的Message-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。 |
---|