email.utils
:其他公用设施¶
源代码: Lib/email/utils.py
在 email.utils
模块:
- email.utils.localtime(dt=None)¶
将本地时间作为已知的日期时间对象返回。如果不带参数调用,则返回当前时间。否则 dt 参数应为
datetime
实例,根据系统时区数据库转换为本地时区。如果 dt 天真(也就是说,dt.tzinfo
是None
,假定为当地时间。在这种情况下,为 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)¶
解析地址——应该是包含字段的某个地址的值,例如 To 或 Cc --它的组成部分 真实姓名 和 电子邮件地址 部分。返回该信息的元组,除非分析失败,在这种情况下,返回
('', '')
返回。
- email.utils.formataddr(pair, charset='utf-8')¶
逆
parseaddr()
,它采用2元组的形式(realname, email_address)
并返回适合于 To 或 Cc 标题。如果的第一个元素 pair 为false,则返回未修改的第二个元素。可选的 charset 是将在 RFC 2047 编码的
realname
如果realname
包含非ASCII字符。可以是的实例str
或ACharset
. 默认为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.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 的参数str
的encode()
方法;默认为'replace'
. 可选的 fallback_charset 指定要在中使用的字符集 RFC 2231 头不为python所知;它默认为'us-ascii'
.为了方便,如果 value 传递给
collapse_rfc2231_value()
不是元组,它应该是一个字符串,并且返回时不带引号。
- email.utils.decode_params(params)¶
根据解码参数列表 RFC 2231 . 帕拉姆 是包含窗体元素的2元组序列
(content-type, string-value)
.
脚注