email.utils :其他公用设施

源代码: Lib/email/utils.py


email.utils 模块:

email.utils.localtime(dt=None)

将本地时间作为已知的日期时间对象返回。如果不带参数调用,则返回当前时间。否则 dt 参数应为 datetime 实例,根据系统时区数据库转换为本地时区。如果 dt 天真(也就是说, dt.tzinfoNone ,假定为当地时间。在这种情况下,为 ISDST 原因 localtime 最初假定夏令时(例如夏令时)在指定时间内有效或无效。的负值 ISDST 导致 localtime 试图预测夏季时间是否在规定时间内有效。

3.3 新版功能.

email.utils.make_msgid(idstring=None, domain=None)

返回适合于 RFC 2822 符合标准的 Message-ID 标题。可选的 ID字符串 如果给定,是用于增强消息ID唯一性的字符串。可选 如果给定,则在“@”之后提供msgid的部分。默认值是本地主机名。通常不需要重写此默认值,但在某些情况下可能会很有用,例如构建跨多个主机使用一致域名的分布式系统。

在 3.2 版更改: 增加了 关键字。

其余功能是遗留功能的一部分 (Compat32 )电子邮件API。不需要直接将它们与新API一起使用,因为它们提供的解析和格式化是由新API的头解析机制自动完成的。

email.utils.quote(str)

返回带有反斜杠的新字符串 str 替换为两个反斜杠,双引号替换为反斜杠双引号。

email.utils.unquote(str)

返回一个新字符串,该字符串是 未引用的 版本 str .如果 str 以双引号结尾和开头,它们被去掉。同样如果 str 端部和开始的角括号,他们被剥离。

email.utils.parseaddr(address)

解析地址——应该是包含字段的某个地址的值,例如 ToCc --它的组成部分 真实姓名电子邮件地址 部分。返回该信息的元组,除非分析失败,在这种情况下,返回 ('', '') 返回。

email.utils.formataddr(pair, charset='utf-8')

parseaddr() ,它采用2元组的形式 (realname, email_address) 并返回适合于 ToCc 标题。如果的第一个元素 pair 为false,则返回未修改的第二个元素。

可选的 charset 是将在 RFC 2047 编码的 realname 如果 realname 包含非ASCII字符。可以是的实例 str 或A Charset . 默认为 utf-8 .

在 3.3 版更改: 增加了 charset 选择权。

email.utils.getaddresses(fieldvalues)

此方法返回由返回的表单的2个元组的列表 parseaddr() . 字段值 是可能由返回的标题字段值序列 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() 返回可直接传递给 time.mktime() 否则 None 将被退回。请注意,结果元组的索引6、7和8不可用。

email.utils.parsedate_tz(date)

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

email.utils.parsedate_to_datetime(date)

与之相反的 format_datetime() 。执行的功能与 parsedate() ,但在成功时返回一个 datetime ;否则 ValueError 如果发生以下情况,则引发 date 包含无效值,例如大于23小时的小时或不在-24小时和24小时之间的时区偏移量。如果输入日期的时区为 -0000 ,即 datetime 将会是一个幼稚的 datetime 如果日期符合RFC,则它将以UTC表示时间,但不指示该日期来自的消息的实际源时区。如果输入日期具有任何其他有效的时区偏移,则 datetime 将会意识到 datetime 具有相应的 timezone tzinfo

3.3 新版功能.

email.utils.mktime_tz(tuple)

返回10元组 parsedate_tz() 进入一个UTC时间戳(从纪元开始的秒数)。如果元组中的时区项是 None ,假设为本地时间。

email.utils.formatdate(timeval=None, localtime=False, usegmt=False)

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

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

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

可选的 本地时间 是一个标志,当 True 解释 时间 ,并返回相对于本地时区(而不是UTC)的日期,正确考虑夏令时。默认值为 False 表示使用了UTC。

可选的 乌斯麦特 是一个标志,当 True ,输出一个日期字符串,其中时区为ASCII字符串 GMT ,而不是数字 -0000 . 这对于某些协议(如HTTP)是必需的。这只适用于 本地时间False . 默认值为 False .

email.utils.format_datetime(dt, usegmt=False)

类似于 formatdate ,但输入是 datetime 实例。如果它是一个幼稚的日期时间,则假定它是“没有关于源时区的信息的UTC”,以及传统的 -0000 用于时区。如果它是一个意识 datetime ,然后使用数字时区偏移。如果是偏移量为零的已知时区,则 乌斯麦特 可以设置为 True ,在这种情况下,字符串 GMT 使用而不是数字时区偏移量。这提供了一种生成符合标准的HTTP日期头的方法。

3.3 新版功能.

email.utils.decode_rfc2231(s)

解码字符串 s 根据 RFC 2231 .

email.utils.encode_rfc2231(s, charset=None, language=None)

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

email.utils.collapse_rfc2231_value(value, errors='replace', fallback_charset='us-ascii')

当头参数编码为 RFC 2231 格式, Message.get_param 可以返回包含字符集、语言和值的3元组。 collapse_rfc2231_value() 将其转换为Unicode字符串。可选的 errors 传递给 errors 的参数 strencode() 方法;默认为 'replace' . 可选的 fallback_charset 指定要在中使用的字符集 RFC 2231 头不为python所知;它默认为 'us-ascii' .

为了方便,如果 value 传递给 collapse_rfc2231_value() 不是元组,它应该是一个字符串,并且返回时不带引号。

email.utils.decode_params(params)

根据解码参数列表 RFC 2231 . 帕拉姆 是包含窗体元素的2元组序列 (content-type, string-value) .

脚注

1

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