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对象

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

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

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

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

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

python email模块详解_python email模块相关推荐

  1. python的pygame模块详解_python游戏模块学习之pygame常规操作讲解

    pygame常规操作 导入模块 import pygame # 导入pygame模块 from sys import exit # 导入退出鼠标点击事件 from math import pi # 导 ...

  2. python中time模块详解_Python time模块详解

    time 模块主要包含各种提供日期.时间功能的类和函数.该模块既提供了把日期.时间格式化为字符串的功能,也提供了从字符串恢复日期.时间的功能. 在 Python 的交互式解释器中先导入 time 模块 ...

  3. python pexpect模块详解_python pexpect模块

    Pexpect模块简介: Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 ...

  4. python logging模块详解_python logging模块使用总结

    目录 logging模块 日志级别 CRITICAL 50 ERROR 40 WARNING 30 INFO 20 DEBUG 10 logging.basicConfig()函数中的具体参数含义 f ...

  5. python中os模块详解_Python OS模块(常见文件操作示例)

    1 Python 常见文件操作示例 2. 3. os.path 模块中的路径名访问函数 4. 分隔 5. basename() 去掉目录路径 , 返回文件名 6. dirname() 去掉文件名 , ...

  6. python pexpect模块详解_python Pexpect模块如何使用 python Pexpect模块使用代码示例

    python Pexpect模块如何使用?本篇文章小编给大家分享一下python Pexpect模块使用代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以 ...

  7. python中configparser详解_python ConfigParser模块详解

    功能介绍 在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,这里简单 ...

  8. python中logging模块详解_python logging日志模块详解

    logging 日志模块详解 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这 ...

  9. python协程详解_python协程详解

    原博文 2019-10-25 10:07 − # python协程详解 ![python协程详解](https://pic2.zhimg.com/50/v2-9f3e2152b616e89fbad86 ...

最新文章

  1. PHP clone() 函数克隆对象
  2. pr图形模板预设怎么使用_技术丨PR怎样安装动态图形模板?Pr mac版怎样调用Mogrt预设?Adobe Premiere导入MOGRTs预设完整教程...
  3. 【网址收藏】Spark History Server配置及使用
  4. C和C++的关键字区别
  5. java八进制转十六进制_java-十进制、八进制、十六进制数互相转换
  6. AT4120-[ARC096D]Sweet Alchemy【贪心,背包】
  7. 合并文件夹中子目录_01 Linux之统计文件夹中文件个数以及目录个数
  8. 快速简易封装歌词文件
  9. iotop iostat_适用于SQL Server DBA的有用的Linux命令– iotop和iostat
  10. 中英文对照 —— 电影与话剧、歌剧
  11. 苹果Mac 软件出现「意外退出」及「打不开」解决方法
  12. 基于Web的爬虫系统设计与实现
  13. Ubuntu交叉编译U-boot
  14. Ubuntu下载anaconda教程(全过程)
  15. 鼠标到达a标签时变成手型
  16. 监听器之jp@gc详解
  17. html5行走的机器人,html5 css3实例教程 一款html5和css3实现的小机器人走路动画
  18. MyBatis面试题及答案
  19. 信息安全等保项目解读
  20. 绘画基础学习之两点透视原理

热门文章

  1. 根据在同一时间使用计算机,3.根据在同一时间使用计算机用户的多少,操作系统可以分为单用户操作系统和多用户操作系统。...
  2. 打断点的方式_一位清华退休老教授:作为家长如果能管住孩子这3点,将来会成才...
  3. gp数据库迁移数据到mysql_greenplum数据迁移
  4. 二分答案——yyy2015c01 的 U 盘(洛谷 P2370)
  5. C语言课后习题(34)
  6. jsp中java代码if_jsp中jstl标签的类似 if - else 语句 的语法
  7. 直播预告丨新时代Oracle DBA成长记-探索故障根源之美
  8. 3场直播丨达梦DM8数据库安装部署初体验、新基建下的国产数据库应用和发展趋势、Oracle外部表创建与使用...
  9. C语言中动态内存分配的本质是什么?
  10. 想被千年后的人知道吗,快去GitHub上传代码吧!