《Python期末大作业格式样本——不带批注-.pdf》由会员分享,可在线阅读,更多相关《Python期末大作业格式样本——不带批注-.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-Python 语言期末大作业(2014 /2015 学年 第 二 学期)报告题目:使用 smtplib和 email 模块发送邮件专业软件工程(嵌入式培养)学生姓名夏何辉班级学号 B14041431 任课教师朱立华教师单位计算机软件教学中心完成日期 2015年 6 月 16 日-评分细则评分项优秀良好中等差上课出勤上课表现上机情况平时作业完成情况期末大作业:(1)书写认真程度(2)内容详实程度(3)文字表达能力(4)是否体现观点简短评语教师签名:年月日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格-使用 smtplib和 email 模块发送邮件 Python 语音是一款方便简介
2、,几乎无所不能的编程语言,我通过自己的课上学习与课下钻研,学会了如何使用smtplib模块定义一个简单的SMTP 客户端来在互联网上发送邮件。在 SMTP 模块这么多已定义的类中,我们最常用的的还是smtplib.SMTP 类,就具体看看该类的用法:smtp 实例封装一个 smtp 连接,它支持所有的SMTP 和 ESMTP 操作指令,如果host 和port 参数被定义,则 smtp 会在初始化期间自动调用connect()方法,如果 connect()方法失败,则会触发 SMTPConnectError异常,timeout 参数设置了超时时间。在一般的调用过程中,应该遵 connetc()
3、、sendmail()、quit()步骤。主要代码如下:SMTP.set_debuglevel(level)/设置输出 debug调试信息,默认不输出调试信息。SMTP.docmd(cmd,argstring)/发送一个 command 到 smtp 服务器,SMTP.connect(host,port)/连接到指定的 smtp 服务器,默认是本机的25 端口。也可以写成hostname:port的形式。SMTP.helo(hostname)/使用 helo 指令向 smtp 服务器确认你的身份。SMTP.ehlo(hostname)/使用 ehlo 指令向 esmtp 服务器确认你的身份。S
4、MTP.ehlo_or_helo_if_needed()/如果在以前的会话连接中没有提供ehlo 或者 helo 指令,这个方法调用 ehlo()或者helo()。SMTP.has_extn(name)/判断指定的名称是否在smtp 服务器上。SMTP.verify(address)/判断邮件地址是否在smtp 服务器上存在。SMTP.login(user,password)-/登陆需要验证的smtp 服务器,如果之前没有提供ehlo 或者 helo 指令,则会先尝试 ESMTP 的 ehlo 指令。SMTP.starttls(keyfile,certfile)/使 smtp 连接运行在 TL
5、S模式,所有的 smtp 指令都会被加密。SMTP.sendmail(from_addr,to_addrs,msg,mail_options,rcpt_options)/发送邮件,该方法需要一些邮件地址和消息。SMTP.quit()/终止 smtp 会话并且关闭连接。如果想在邮件中携带附件、使用html 书写邮件,附带图片等等,就需要使用email模块及其子模块。下面来看看email 包,email 包是用来管理 email 信息的,它包括MIME和其他基于 RFC 2822的消息格式。email 包的主要特征是在它内部解析和生成email 信息是分开的模块来实现的。MIME 消息由消息头和消
6、息体两大部分组成,在邮件里就是邮件头和邮件体。邮件头与邮件体之间以空行进行分隔。邮件头包含了发件人、收件人、主题、时间、MIME 版本、邮件内容的类型等重要信息。每条信息称为一个域,由域名后加“:”和信息内容构成,可以是一行,较长的也可以占用多行。域的首行必须“顶头”写,即左边不能有空白字符(空格和制表符);续行则必须以空白字符打头,且第一个空白字符不是信息本身固有的。邮件体包含邮件的内容,它的类型由邮件头的“Content-Type”域指出。最常见的类型有 text/plain(纯文本)和 text/html(超文本)。邮件体被分为多个段,每个段又包含段头和段体两部分,这两部分之间也以空行分
7、隔。常见的multipart类型有三种:multipart/mixed,multipart/related和 multipart/alternative。在 email 的包里面包含了很多模块:email.message email.parser email.generator email.mime 创建 email 和 MIME对象email.header email.charset-email.encoders email.ereors email.utils email.iterators 主要来看看email.mime,在邮件中携带附件、图片、音频时,主要使用的是该模块。一般情况下,你
8、通过解析一个文件或者一段text来生成一个消息对象结构,你也可以从头开始建立一个消息结构,实际上,你可以给一个已经存在的消息结构追加一个新的消息对象。你可以通过创建message实例来创建一个对象结构,然后给该结构追加附件和头部信息。email 包提供了一些子类使得该操作变得很容易。模拟在邮件内容中携带图片,如下:from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage import smtplib from
9、_mail= to_mail= msg=MIMEMultipart()msgFrom=from_mail msgTo=to_mail msgSubject=python mail test body=test img send con=MIMEText(%s%body,html)msg.attach(con)img=MIMEImage(file(D:10535-102.jpg,rb).read()img.add_header(Content-ID,D:10535-102.jpg)msg.attach(img)server=smtplib.SMTP()server.docmd(ehol,)-server.starttls()server.login(,password)server.sendmail(from_mail,to_mail,msg.as_string()server.quit()