非常教程

Python参考手册

网络数据 | Internet Data

email.generator: Generating MIME documents

最常见的任务之一是生成由消息对象结构表示的电子邮件消息的平面文本。如果要通过smtplib模块或nntplib模块发送消息,或者在控制台上打印消息,则需要执行此操作。采用消息对象结构并生成平面文本文档是该Generator课程的职责。

同样,与email.parser模块一样,您不限于捆绑生成器的功能; 你可以自己从头开始编写一个。然而,捆绑的生成器知道如何以符合标准的方式生成大多数电子邮件,应该很好地处理MIME和非MIME电子邮件消息,并且设计为从平面文本到通过Parser类的消息结构的转换,以及返回到平面文本,是幂等的(输入与输出相同)[1]。另一方面,在Message由程序构造的情况下使用发生器可能导致Message对象的变化,因为默认值被填充。

以下是Generator从该email.generator模块导入的类的公共方法:

class email.generator.Generator(outfp[, mangle_from_[, maxheaderlen]])

Generator该类的构造函数将一个名为outfp的文件类对象作为参数。outfp必须支持该write()方法,并可用作Python扩展打印语句中的输出文件。

可选的_mangle_from__是一个标志,当True它将一个>字符放在正文中的任何一行的前面,该行的起始位置恰好是From,即From在该行的开头处后跟一个空格。这是避免将这些行误认为是Unix邮箱格式信封头分隔符的唯一有保证的便携方式(有关详细信息,请参阅为什么内容长度格式有问题)。_mangle_from__默认为True,但False如果您未编写Unix邮箱格式文件,则可能需要将其设置为。

可选maxheaderlen指定非持续标头的最长长度。当标题行长度超过maxheaderlen时(以字符为单位,标签扩展为8个空格),标题将按Header类中定义的方式分割。设置为零以禁用标题换行。根据RFC 2822的建议(但不是必需的),默认值为78 。

其他公共Generator方法是:

flatten(msg[, unixfrom])

将以msg为根的消息对象结构的文本表示形式打印到Generator创建实例时指定的输出文件。子部分先访问深度优先,结果文本将进行正确的MIME编码。

可选unixfrom是一个标志,它强制在根消息对象的第一个RFC 2822标头之前打印包头分隔符。如果根对象没有信封头,则制作一个标准头。默认情况下,这被设置为False禁止打印信封分隔符。

请注意,对于子部件,不会打印任何信封头。

2.2.2版中的新功能。

clone(fp)

Generator使用完全相同的选项返回此实例的独立克隆。

2.2.2版中的新功能。

write(s)

将字符串s写入基础文件对象,即将outfp传递给Generator构造函数。这为Generator扩展打印语句中使用的实例提供了足够类似文件的API 。

为方便起见,请参见方法Message.as_string()str(aMessage),又名Message.__str__(),其简化的消息对象的格式的字符串表示的生成。有关更多细节,请参阅email.message

email.generator模块还提供了一个派生类,称为DecodedGenerator它与Generator基类相似,不同之处在于非文本部分用代表该部分的格式字符串代替。

class email.generator.DecodedGenerator(outfp[, mangle_from_[, maxheaderlen[, fmt]]])

这个类来自Generator遍历消息的所有子部分。如果子部分是主类型文本,则它打印子部分的解码有效载荷。可选的__mangle_from_ 和_maxheaderlenGenerator基类相同。

如果子部分不是主类型文本,则可选fmt是使用的格式字符串,而不是消息负载。fmt用以下关键字进行扩展,%(keyword)s格式为:

  • type- 非文本部分的完整MIME类型
  • maintype- 非文本部分的主要MIME类型
  • subtype- 非文本部分的子MIME类型
  • filename- 非文本部分的文件名
  • description- 与非文本部分关联的描述
  • encoding- 非文本部分的内容传输编码

意思fmt的默认值是None

[Non-text (%(type)s) part of message omitted, filename %(filename)s]

2.2.2版中的新功能。

在版本2.5中更改:先前弃用的方法__call__()已被删除。

脚注

1

此语句假定您为unixfrom参数使用适当的设置,并且您将maxheaderlen = 0(它将保留输入行长度)。这也不是完全正确的,因为在许多情况下,标题中的空白运行会折叠为单个空白。后者是一个最终将被修复的错误。

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法