python函数pop,Python函数调用

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

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

为凤县等地区用户提供了全套网页设计制作服务,及凤县网站建设行业解决方案。主营业务为网站设计制作、网站制作、凤县网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

发件人-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 怎么用pop从左开始取值

a = [1, 2, 3, 4]

b = a.pop(1) # 得到pop函数的返回值:b=1

a.pop(1) # 这样也是可以的,我们可以选择忽略pop函数的返回值

del(a[1]) # 这时a里只剩下一个元素

而这样则是非法的:

1

2

a = [1, 2, 3]

b = del(a[1]) # 因为del函数不能有返回值

所以,如果忽略掉可否有返回值这一点,这两个用法是等效的。

python中建栈如何pop出不是最后一个元素

python中你可以使用list模拟栈数据结构,list自带pop函数,默认为获取最后一个元素,但是可以通过指定索引值pop(i),获取指定位置的元素。

如果元素索引错误,抛出IndexError异常。

python pop函数

def pop(a):

if a and isinstance(a, list):

c = a[-1]

del a[-1]

return c

else:

return ""

if __name__ == "__main__":

a = [1,2,3,4,5]

print a

pop(a)

print a


网页标题:python函数pop,Python函数调用
分享链接:http://azwzsj.com/article/hechod.html