email.header: Internationalized headers
如果要在电子邮件标题中包含非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
如果字符串不能用该字符集解码,则会产生一个字符串。
可选错误将传递给任何unicode()
或unicode.encode()
调用,并且默认为“严格”。
encode([splitchars])
本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
构造函数。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com