不多说,show the code:
# -- coding: utf-8 --\rimport smtplib\rimport email.MIMEMultipart# import MIMEMultipart\rimport email.MIMEText# import MIMEText\rimport email.MIMEBase# import MIMEBase\rimport os.path\rimport mimetypes\rimport time\r\rFrom = \"大众fffs@sss.com\"大众\rTo = \公众xxx@163.com\"大众\rdateStr = time.strftime(\"大众%Y-%m-%d\"大众, time.localtime(time.time))\rfile_name = \公众C:\Users\Thinkpad\Desktop\dailyFiles\"大众 + \"大众\\"大众 + dateStr + \公众\work.txt\公众\rprint file_name\r\r\rserver = smtplib.SMTP_SSL(\"大众smtp.exmail.qq.com\"大众, 465)\rserver.login(From,\"大众xxx\"大众) #仅smtp做事器须要验证时\r\r# 布局MIMEMultipart工具做为根容器\rmain_msg = email.MIMEMultipart.MIMEMultipart\r\r# 判断是否是空内容\rfile_context = open(file_name).read.strip\rif (file_context == 'today work is:'):\r # 相称于内容为空,给自己发一份提示邮件\r text_msg = email.MIMEText.MIMEText(\"大众你今日的事情情形还未做记录,请检讨夹帐动运行该脚本发送邮件。\公众,_charset=\公众utf-8\"大众)\r main_msg.attach(text_msg)\r main_msg['From'] = From\r main_msg['To'] = From\r main_msg['Subject'] = \"大众今日事情申报请示发送失落败\"大众\r main_msg['Date'] = email.Utils.formatdate\r # 得到格式化后的完全文本\r fullText = main_msg.as_string\r # 用smtp发送邮件\r try:\r server.sendmail(From, From, fullText)\r finally:\r print 'success!'\r server.quit\r\r print u\公众你今日的事情情形还未做记录,请检讨夹帐动运行该脚本发送邮件。\"大众\r exit\r\r\r# 布局MIMEText工具做为邮件显示内容并附加到根容器\rtext_msg = email.MIMEText.MIMEText(\公众你好,今日的事情情形见附件\"大众,_charset=\公众utf-8\"大众)\rmain_msg.attach(text_msg)\r\r# 布局MIMEBase工具做为文件附件内容并附加到根容器\r\r## 读入文件内容并格式化 \rdata = open(file_name, 'rb')\rctype,encoding = mimetypes.guess_type(file_name)\rif ctype is None or encoding is not None:\r ctype = 'application/octet-stream'\rmaintype,subtype = ctype.split('/',1)\rfile_msg = email.MIMEBase.MIMEBase(maintype, subtype)\rfile_msg.set_payload(data.read)\rdata.close\remail.Encoders.encode_base64(file_msg)#把附件编码\r\r## 设置附件头\rbasename = os.path.basename(file_name)\rfile_msg.add_header('Content-Disposition','attachment', filename = basename)#修正邮件头\rmain_msg.attach(file_msg)\r\r# 设置正文内容\r# # 设置根容器属性\rmain_msg['From'] = From\rmain_msg['To'] = To\rmain_msg['Subject'] = \"大众今日事情申报请示\公众\rmain_msg['Date'] = email.Utils.formatdate\r\r# 得到格式化后的完全文本\rfullText = main_msg.as_string\r\r# 用smtp发送邮件\rtry:\r server.sendmail(From, To, fullText)\rfinally:\r print 'success!'\r server.quit
大略讲便是利用stmp做事,把之前博客里讲的逐日天生的事情日志以附件形式添加到邮件里(http://www.cnblogs.com/freephp/p/5148320.html),邮件里的正文一样平常也是固定的内容或者格式,这也是可以用脚本定时发送的缘故原由。我们只需在固定的文本文件(便是附件文件)里写我们的事情情形即可。在程序最开头的地方我有去判断是否附件里没有写内容,若由于忘却写内容而直接发送出去会比较囧,以是加以判断,无内容则用邮件办法给自己邮箱发送一封提示邮件,督匆匆自己补上内容,再手动run一下这个脚本吧。
当然有人会提出一个问题:干嘛不封装成类?

答:对付这样大略的功能,函数式的调用可读性更强。且功能不足多,封装上风不太明显。面向工具只是一种代码组装的办法,它从来不是在任何时候都是最佳选择。
实在很多自动化的实践都来源于实际事情,这个脚本我以运用到自己的项目组内,效果还不错。邮件不能完备代替及时的沟通,但它是一种正式和归纳的信息反馈。对付这样的互换办法,我更关注于内容,而不是花韶光在繁琐地操作上。
对付这个小脚本我还可以深入思考关于邮件方面的是:
1.群发抄送联系人的功能也是很实用的,可以新增该功能。
2.对邮件内容的审核过滤,防止发生意外(侧漏)。
3.对邮箱中新增邮件进行的关键字遍历,这样不用每次一个一个去点,直接找到须要的功能。
4.自动回答邮件,对一些特定需回答的邮件,可以解析内容然后自动回答。
末了:
人生苦短,快用python.