Python参考手册
网络数据 | Internet Data
email.header: Internationalized headers
RFC 2822是描述电子邮件格式的基本标准。它来自早期的 RFC 822标准,该标准在大多数电子邮件仅由ASCII字符组成的时候被广泛使用。RFC 2822是一个规范,其中假定电子邮件仅包含7位ASCII字符。
当然,由于电子邮件已经在全球范围内部署,它已经变得国际化,因此现在可以在电子邮件中使用特定于语言的字符集。基本标准仍然要求仅使用7位ASCII字符传输电子邮件,因此已经编写了大量的RFC描述了如何将包含非ASCII字符的电子邮件编码为RFC 2822兼容格式。这些RFC包括RFC 2045,RFC 2046,RFC 2047和RFC 2231。该email
软件包在其模块email.header
和email.charset
模块中支持这些标准。
如果要在电子邮件标题中包含非ASCII字符,请在Subject或To字段中说明,应该使用Header
该类并将Message
对象中的字段分配给实例,Header
而不是使用字符串作为标题值。Header
从email.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_NAME是None
,这意味着它不考虑为一个长,分割报头的第一行。
可选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
构造函数。
网络数据 | Internet Data相关
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 |