python电子邮件系列(三)之POP接收邮件

Python013

python电子邮件系列(三)之POP接收邮件,第1张

由上篇文章我们已经得知邮件从发送到接收的过程:

发件人->MUA->MTA->若干MTA->MDA->MUA->收件人

本节接收邮件主要就是编写一个 MUA 客户端,从 MDA 将邮件取回本地。

收取邮件最常用的是 POP协议 ,目前版本是第三版,也称 POP3 。python内置了 poplib 模块,支持POP3协议。

回想上一节 SMTP ,我们对要发送的邮件内容进行了各种编码,包括添加MIME header,编码之后再进行发送。

因此,我们通过POP3协议接收的也不是原内容,而是经过一系列编码等处理的文本。

所以,要想把POP3收取的文本变为可阅读的邮件对象,就需要利用 email 模块对原始邮件进行解析。

所以,邮件收取的流程就是:

由上一篇 文章 最后总结部分可知。邮件由字符到发送到网络经历了如下的格式转化:

纯文本:

str->bytes->base64->str->bytes

二进制文件:

binary code->base64->str->bytes

我们解析邮件也是按这个思路,逆序解析出内容。

这里的 decode('utf-8') 先把字节流转化为字符串,再将字符串转化为 message 结构的对象。这步与发送邮件的 as_string 函数相反。

先从上一节结构化的 msg 中取出信件头,打印出来。

如果是 multipart 结构, get_payload 函数会返回一个包含不同part的list,然后对每一part递归调用 print_info ,打印子信件头和子信件内容。

不是 multipart 时,之后再依据 Content-Type 作不同处理:

如果是 text :

利用 get_payload(decode = Ture) 取出子信件的内容, decode 为True,则按照 Content-Transfer-Type 将 base64 或 QP 解码为 bytes 。

再 guess_charset 猜出编码方式,之后将其解码为字符显示。

如果不是 Text 对象,则为附件:

打印出附件的 Content-Type 。

逻辑教育python电子合同需要录入相关信息,需要打名字。逻辑教育python电子合同是需要先打名字,需要生效的话,生效电子合同的名字要手写签字才能生效。电子合同是双方或多方当事人之间通过电子信息网络以电子的形式达成的设立、变更、终止财产性民事权利义务关系的协议。通过上述定义可以看出电子合同是以电子的方式订立的合同,其主要是指在网络条件下当事人为了实现一定的目的,通过数据电文、电子邮件等形式签订的明确双方权利义务关系的一种电子协议。

pdf格式的文件必须用相应的pdf阅读器才能打开,而且一般的pdf阅读器打开pdf文件后并不支持编辑修改PDF文档的文字。如果可以把把pdf转化为txt文本文件,那么我们阅读编辑起来就容易的多。现在市场上已经有很多PDF转换程序,但是基本上需要付费。但是你只要学会了用Python来进行pdf文件转换为txt文件操作,仅仅只需要短短几行代码就可以搞定