非常教程

Python参考手册

网络数据 | Internet Data

email.header: Internationalized headers

RFC 2822是描述电子邮件格式的基本标准。它来自早期的 RFC 822标准,该标准在大多数电子邮件仅由ASCII字符组成的时候被广泛使用。RFC 2822是一个规范,其中假定电子邮件仅包含7位ASCII字符。

当然,由于电子邮件已经在全球范围内部署,它已经变得国际化,因此现在可以在电子邮件中使用特定于语言的字符集。基本标准仍然要求仅使用7位ASCII字符传输电子邮件,因此已经编写了大量的RFC描述了如何将包含非ASCII字符的电子邮件编码为RFC 2822兼容格式。这些RFC包括RFC 2045RFC 2046RFC 2047RFC 2231。该email软件包在其模块email.headeremail.charset模块中支持这些标准。

如果要在电子邮件标题中包含非ASCII字符,请在SubjectTo字段中说明,应该使用Header该类并将Message对象中的字段分配给实例,Header而不是使用字符串作为标题值。Headeremail.header模块导入类。例如:

>>> from email.message import Message
>>> from email.header import Header
>>> msg = Message()
>>> h = Header('p\xf6stal', 'iso-8859-1')
>>> msg['Subject'] = h
>>> print msg.as_string()
Subject: =?iso-8859-1?q?p=F6stal?=

请注意我们如何让主题字段包含非ASCII字符?我们通过创建Header实例并传入字符串编码的字符集来实现此目的。当后续Message实例变平时,Subject字段正确地采用RFC 2047编码。支持MIME的邮件阅读器将使用嵌入的ISO-8859-1字符显示此头文件。

2.2.2版中的新功能。

这里是Header课程描述:

class email.header.Header([s[, charset[, maxlinelen[, header_name[, continuation_ws[, errors]]]]]])

创建一个可以包含不同字符集中的字符串的符合MIME的标头。

可选s是初始标题值。如果None(默认),则未设置初始标题值。您可以稍后使用append()方法调用追加到标题。s可能是一个字节字符串或一个Unicode字符串,但请参阅append()文档的语义。

可选的字符集有两个目的:它与方法的字符集参数具有相同的含义append()。它还为append()忽略字符集参数的所有后续调用设置默认字符集。如果构造函数中没有提供charset(缺省值),则us-ascii字符集既用作s的初始字符集又用作后续append()调用的默认字符集。

最大行长度可以通过maxlinelen明确指定。为了将第一行分割为一个较短的值(为了说明没有包含在s中的字段标题,例如Subject),传入header_name中字段的名称。默认maxlinelen是76,而对于默认值HEADER_NAMENone,这意味着它不考虑为一个长,分割报头的第一行。

可选continuation_ws必须是符合RFC 2822的折叠空白,并且通常是空格或硬标签字符。这个角色将被添加到延续线。continuation_ws默认为单个空格字符(“”)。

可选错误直接传递给append()方法。

append(s[, charset[, errors]])

将字符串s附加到MIME头。

可选的字符集,如果有的话,应该是一个Charset实例(参见email.charset)或字符集的名称,它将被转换为Charset实例。值None(默认值)表示使用构造函数中给出的字符集

s可能是一个字节字符串或一个Unicode字符串。如果它是一个字节字符串(即为isinstance(s, str)真),则字符集是该字节字符串的编码,UnicodeError如果字符串不能用该字符集解码,则会产生一个字符串。

如果s是一个Unicode字符串,则charset是一个提示,指定字符串中字符的字符集。在这种情况下,产生一个时RFC 2822使用兼容的报头RFC 2047分的规则,Unicode字符串将使用下述顺序的字符集编码的:us-ascii中,字符集提示,utf-8。使用第一个字符集不会激发a UnicodeError

可选错误将传递给任何unicode()unicode.encode()调用,并且默认为“严格”。

encode([splitchars])

将消息头编码为符合RFC的格式,可能包装长行并将非ASCII部分封装在base64或quoted-printable编码中。可选的splitchars是一个字符串,它包含用来分隔长ASCII码的字符,粗略地支持RFC 2822最高级句法中断。这不会影响RFC 2047编码行。

Header类还提供了一些方法,以支持标准的运营商和内置函数。

__str__()

一个同义词Header.encode()。有用的str(aHeader)

__unicode__()

内置unicode()函数的助手。以Unicode字符串形式返回标题。

__eq__(other)

该方法允许您比较两个Header实例是否相等。

__ne__(other)

该方法允许您比较两个Header不平等的实例。

email.header模块还提供以下便利功能。

email.header.decode_header(header)

在不转换字符集的情况下解码消息标题值。标题值位于标题中

该函数返回一个(decoded_string, charset)包含头部每个解码部分的对列表。字符集None用于报头的非编码的部分,否则包含已编码的字符串中指定的字符集的名称的小写字符串。

这是一个例子:

>>> from email.header import decode_header
>>> decode_header('=?iso-8859-1?q?p=F6stal?=')
[('p\xf6stal', 'iso-8859-1')]

email.header.make_header(decoded_seq[, maxlinelen[, header_name[, continuation_ws]]])

Header从返回的成对序列中创建一个实例decode_header()

decode_header()接受一个标题值字符串并返回一组字符串对,(decoded_string, charset)其中charset字符集的名称。

该函数使用这些序列中的一个并返回一个Header实例。可选maxlinelen信头,和continuation_ws如在Header构造函数。

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()方法