1、人教/中图版(2019)第三章3.3.2开发简易的电子邮件客户端电子邮件服务几乎是伴随着计算机网络而出现的,目前这个“古老”的服务仍在广泛使用。收发电子邮件的软件,是一种典型的网络应用软件。要想编写收发电子邮件的客户端软件,首先应当了解电子邮件系统的基本架构和工作过程一个典型的电子邮件服务系统由服务器和客户端组成。如果没有特殊情况,所有的邮件服务器会24小时工作,随时准备接收或发送邮件。因此发件人可以随时上网发送邮件,收件人可以随时打开自己的电子信箱阅览邮件,收发双方不必同时在线。典型的电子邮件系统主要涉及两种协议:SMTP和POPv3。SMTP是 simple mail transfer p
2、rotocol的缩写,中文译为“简单邮件传送协议”,用于发送电子邮件;POPv3指第3版的邮局协议(post office protocol version3),用于接收电子邮件。显而易见,系统中要有能按照这两种协议工作的服务器,即SMTP服务器和POPv3服务器。通过分析还可以发现,要编写的用于收发电子邮件的软件主要供客户端使用,它们必须依附已有的电子邮件系通依交流统才能工作。思考活动思考活动信息系统中的服务器下面的说法对吗?为什么?在一个信息系统中,可以只包括一种服务器,也可以包括多种服务器 在一个信息系统中,不同的服务器,如POPv3服务器、SMTP服务器,对应着不同的计算机,即一台计算
3、机只能提供一种网络服务。项目实施项目实施编程获取电子邮件列表1.用 Python语言编写或改写程序,并了解各段代码的功能。import poplib#引入处理协议的库from email import parserfrom email.header import decode_headerserver=poplib.POP_3SSL(xxx.xxx.xxx)#PoPv3服务器项目实施项目实施server user(xxxx)#用户名server,pass(xxxx)resp,mails,octets=server.list()#获取邮件列表print(”共有%d封邮件.“%1en(mai1s)
4、for Index in range(len(mails):resp,lines,octets=server.retr(index+1)msg _content=brn.join(lines).decode(utf-8)msg=parser,Parser().parsestr(msg.content)Emmailbas=项目实施项目实施for line in msg.items();header-lineif header in From,Subject,Date;iten-decode header(line1)-1Code=itemn(1 If item1!=None elseasciiI
5、f isinstance(item,bytes);value str(item,code)Else:value=itememailbase header=valueprint(%d/%d%(index+1.len(mails)项目实施项目实施print(发送信箱:“+emailbaseFrom)print(信件主题:+emailbaseSubject)print(发信时间:+emailbase Date)server,quit()2.运行程序,观察运行结果。共有15封件-1/15-发信信箱:项目实施项目实施信件主题:欢迎使用新浪邮箱发信时间:Thu,20Feb2017 10:36:34+080
6、0-2/15-发信信箱:信件主题:自动回复;我申请到电子信箱了发信时间:Thu,20Fb201711:04:58+080(CST)3.用渊览器等软件访问自己的电子信箱,看看显示的邮件列表与程序获取的列表是否一致。与收取邮件对应的是发送邮件。发送邮件使用的网络协议是SMTP,编程前,要弄清用于发送邮件的服务器的地址、发信人的账号和密码等相关信息。思考活动思考活动编写网络软件可能遇到的问题1.编写网络应用软件时,必须理清以下哪些信息?信息系统采用的网络协议 各种服条器的地址 得到授权的用户名及相应的密码2.想一想,如果滥用程序大批量发送邮件,可能会带未什么问题?3.用客户撼软件或者用浏览器,都能访问也子信箱收发电子啷件,你更喜欢哪种方式?为什么?