python email模块详解_python email模块

python email模块

email模块

电子邮件包是一个用于管理电子邮件消息的库。它的特殊设计不用于向SMTP (RFC 2821)、NNTP或其他服务器发送任何电子邮件消息;这些是模块的函数,如smtplib和nntplib。电子邮件包尝试尽可能符合RFC,支持RFC 5233和RFC 6532,以及与mime相关的RFC 2045、RFC 2046、RFC 2047、RFC 2183和RFC 2231。

电子邮件包的总体结构可以分为三个主要组件,以及控制其他组件行为的第四个组件。

包的核心组件是表示电子邮件消息的“对象模型”。应用程序主要通过消息子模块中定义的对象模型接口与包进行交互。应用程序可以使用这个API询问关于现有电子邮件的问题,构造新的电子邮件,或者添加或删除本身使用相同对象模型接口的电子邮件子组件。也就是说,根据电子邮件消息及其MIME子组件的性质,电子邮件对象模型是所有提供EmailMessage API的对象的树结构。

包的另外两个主要组件是解析器和生成器。解析器获取电子邮件消息的序列化版本(字节流),并将其转换为EmailMessage对象树。生成器接收电子邮件消息并将其转换回序列化的字节流。(解析器和生成器也处理文本字符流,但不建议使用这种用法,因为很容易出现以某种方式无效的消息。)

控制组件是策略模块。每个电子邮件消息、每个生成器和每个解析器都有一个关联的策略对象来控制其行为。通常,应用程序只需要在创建EmailMessage时指定策略,方法是直接实例化EmailMessage来创建新电子邮件,或者使用解析器解析输入流。但是,当使用生成器序列化消息时,策略可以更改。例如,这允许从磁盘解析一般的电子邮件消息,但是在将其发送到电子邮件服务器时,可以使用标准SMTP设置对其进行序列化。

电子邮件包尽力向应用程序隐藏各种治理rfc的详细信息。从概念上讲,应用程序应该能够将电子邮件消息视为unicode文本和二进制附件的结构化树,而不必担心这些附件在序列化时是如何表示的。然而,在实践中,经常需要了解至少一些管理MIME消息及其结构的规则,特别是MIME“内容类型”的名称和性质,以及它们如何标识多部分文档。在大多数情况下,这些知识只应该在更复杂的应用程序中使用,即使在这种情况下,也应该只是高级结构,而不是那些结构如何表示的细节。由于MIME内容类型在现代互联网软件中被广泛使用(不仅仅是电子邮件),这对许多程序员来说将是一个熟悉的概念。

以下部分描述了电子邮件包的功能。我们从消息对象模型开始,它是应用程序将使用的主要接口,然后是解析器和生成器组件。然后介绍策略控制,它完成了对库的主要组件的处理。

接下来的三个部分将讨论包可能引发的异常和解析器可能检测到的缺陷(不符合rfc)。然后,我们将介绍headerregistry和contentmanager子组件,它们分别为更详细地操作头部和有效负载提供了工具。这两个组件都包含与消费和生成非平凡消息相关的特性,而且还记录了它们的可扩展性api,这将是高级应用程序感兴趣的。

下面是一组使用前面几节中介绍的api的基本部分的示例。

上面所示的是电子邮件包的现代(unicode友好)API。余下的部分,从Message类开始,将介绍遗留的compat32 API,它更直接地处理如何表示电子邮件消息的细节。compat32 API不会向应用程序隐藏rfc的细节,但是对于需要在该级别上操作的应用程序,它们可能是有用的工具。由于向后兼容性的原因,本文档还适用于仍然使用compat32 API的应用程序。

在3.6版更改:文档重组和重写,促进新的EmailMessage / EmailPolicy API。

Contents of the email package documentation:

Legacy API:

电子邮件包文档内容:

电子邮件。消息:表示电子邮件消息

电子邮件。解析器:解析电子邮件消息

实现FeedParser API

解析器API

额外的笔记

电子邮件。生成器:生成MIME文档

电子邮件。策略:策略对象

电子邮件。错误:异常和缺陷类

电子邮件。headerregistry:自定义头对象

电子邮件。contentmanager:管理MIME内容

Content Manager实例

电子邮件:示例

遗留API:

email.message。消息:使用compat32 API表示电子邮件消息

电子邮件。mime:从零开始创建电子邮件和mime对象

电子邮件。标题:国际化头

电子邮件。字符集:表示字符集

电子邮件。编码器:编码器

电子邮件。跑龙套:其他工具

电子邮件。迭代器:迭代器

Email模块

如果想在邮件中携带附件、使用html书写邮件,附带图片等等,就需要使用email模块及其子模块。下面来看看email包,email包是用来管理email信息的,它包括MIME和其他基于RFC 2822的消息格式。email包的主要特征是在它内部解析和生成email信息是分开的模块来实现的。

你可能感兴趣的:(python,email模块详解)