(Photo byMia BakeronUnsplash)
今天看到又耳笔记这篇导出mysql数据,利用pandas生成excel文档,并发送邮件文章时,我决定把它实现出来。
查资料、编码、测试、优化、添加注释……花了3个多小时将全部工作完成。现在整理出来,发布在这里。本文贴出的就是全部源代码,只要安装了相应的包,在Python 2.7环境下可以直接拿过去跑,本机测试邮件能够发送成功。没有Mysql和Pandas也不要紧,注释掉fetch_db和gen_xls函数,直接执行sendmsg也行。
环境准备:
Mac os 10.11.6 + Anaconda Navigator 1.2.1+ Python 2.7.12 + Sublime 3.0
技术要点:
Mysqldb数据库连接
Pandas Dataframe转换Excel文件
正则表达式匹配邮箱
smtplib协议实现原理
代码实现:
执行结果:
生成的excel文件如下图所示,表中数据使用Tushare获取。
登录邮箱,显示邮件发送成功,附件内容与excel数据一致,没有乱码。
总结:
全部代码150多行,没有什么复杂的技术难题,对老司机来说,这个任务小菜一碟。测试中遇到的难点问题,全部通过注释语句标注出来了,请重点注意。如果没有Python基础,有些地方你可能需要花一些时间理解。阮一峰博客里面有人留言说,"现在的程序员关注底层技术的越来越少了"。SMTP协议就是一个很好的例子,我们每天都在用,但根本没有想过它是如何实现的,延伸阅读里面对SMTP协议有比较详细的介绍。当然,亲自动手把这个程序写一遍,对SMTP协议会有一个更深入的理解。
参考资料:
导出mysql数据,利用pandas生成excel文档,并发送邮件
(http://blog.51cto.com/youerning/1708941)
SMTP发送邮件
(https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000)
Zabbix监控之邮件发送失败-smtp-server: 错误代码550与535
(http://blog.51cto.com/clovemfong/1702105)
领取专属 10元无门槛券
私享最新 技术干货