email.utils:杂项实用程序

源代码: Lib / email / utils.py


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

email.utils.localtimedt=None

将本地时间作为知晓的日期时间对象返回。如果调用withoutarguments,则返回当前时间。否则dt参数应为datetime实例,并根据系统时区数据库转换为本地时区。如果dt是天真的(即dt.tzinfoNone),则假定是在当地时间。在这种情况下,isdst的正值或零值导致localtime初步确定夏令时(例如,夏令时)是否(分别)在指定时间内有效。isdst的负值导致localtime试图判断夏令时是否在指定的时间内有效.

版本3.3 .

email.utils.make_msgididstring=None, domain=None

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

更改版本3.2:添加了domain关键字

其余功能是遗产的一部分(Compat32电子邮件API。没有必要直接使用这些新API,因为它们提供的解析和格式化是由新API的头解析机制自动完成的.

email.utils.quote (str)

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

email.utils.unquote// (str)

返回一个新的字符串是unquoted str。如果str结束并且用双引号开头,它们就会被剥离。同样,如果str结束并用尖括号开始,它们会被剥掉.

email.utils.parseaddr (address )

解析地址 – 应该是某个包含地址的字段的值,如ToCc – 组成realnameemail address部分。返回该信息的元组,除非parsefails,在这种情况下是("", "")归来了

email.utils.formataddrpair, charset=”utf-8″

的倒数parseaddr(),这需要一个2元组的形式(realname,email_address)并返回适合ToCc标题的字符串值。如果pair的第一个元素为false,则返回未修改的第二个元素.

可选charset如果包含非ASCII字符,则将在 RFC 2047 realnamerealname编码中使用的字符集。可以是strCharset的实例。默认为utf-8.

改版3.3:添加了charset选项。

email.utils.getaddressesfieldvalues

此方法返回parseaddr().fieldvalues是一个由Message.get_all返回的头字段值序列。这是一个简单的示例,它获取消息的所有收件人:

from email.utils import getaddressestos = 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.parsedatedate

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

email.utils.parsedate_tzdate

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

email.utils.parsedate_to_datetimedate

的倒数format_datetime()。执行与parsedate(),但成功后返回datetime。如果输入日期的时区为-0000,则datetime将是一个天真的datetime如果日期符合RFC,则它将表示UTC时间,但没有指示日期来自的主题的实际来源时区。如果输入日期有任何其他有效的时区偏移,datetime将知道datetime与相应的timezone tzinfo.

新版本3.3.

email.utils.mktime_tz (tuple)

转10元组由parsedate_tz()UTC时间戳(自纪元以来的秒数)。如果元组中的时区项是​​None,假设当地时间.

email.utils.formatdatetimeval=None, localtime=False, usegmt=False

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

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

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

可选localtimeTrue时的标志,解释timeval,并返回相对于当地时区而不是UTC的日期,正确考虑到节日时间。默认为False表示UTC已被使用.

可选usegmt是一个标志,当True时,输出一个日期字符串,其中timezone为ascii字符串GMT,而不是数字-0000。这对于某些协议(例如HTTP)是必需的。这只适用于localtimeFalse。默认是False.

email.utils.format_datetimedt, usegmt=False

formatdate一样,但输入是datetime实例。如果它是一个天真的日期时间,它被假定为“UTC没有关于时间区域的信息”,而传统的-0000用于时区。如果它是一个知道datetime,那么使用数字时区偏移。如果它是一个偏移为零的知道时区,则usegmt可以设置为True,在这种情况下使用字符串GMT而不是numerictimezone偏移量。这提供了一种生成符合标准的HTTPdate标头的方法.

新版本3.3.

email.utils.decode_rfc2231 (s)

解码字符串s根据 RFC 2231 .

email.utils.encode_rfc2231s, charset=None, language=None

编码字符串s根据 RFC 2231 。可选的 charsetlanguage,如果给出的是要使用的字符集名称和语言名称。如果没有给出,//原来是s返回。如果给出charsetlanguage不是,则使用language.

email.utils.collapse_rfc2231_valuevalue, errors=”replace”, fallback_charset=”us-ascii”

当头文件参数以 RFC 2231 格式编码时,Message.get_param可能会返回一个包含该元素的三元组字符集,语言和价值。collapse_rfc2231_value()把它变成unicodestring。可选errors传递给errors str方法的encode()参数;它默认为"replace"。可选的fallback_charset如果Python不知道 RFC 2231 标题中的那个,则指定要使用的字符集;它默认为"us-ascii".

为方便起见,如果value传递到collapse_rfc2231_value()是不是元组,它应该是一个字符串,它是不引用的返回.

email.utils.decode_params (params)

根据 RFC 2231 //解码参数列表. params是包含(content-type, string-value).

脚注

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

评论被关闭。