今天是清明长假的最后一天了,趁着这点空余的时间想来做点有意思的东西,之前做12306自动购票程序的时候就想加入一个功能,就是抢票成功后实现自动向指定的邮箱里面发送提醒信息的邮件,功能还是很简单的,今天花了一点时间来实现了一下,做完以后我突然在想,能不能用这个小功能来每天定时地向女朋友发送天气预报的邮件呢?这样不是很有意思的吗?说做就做,于是乎开始了QQ自动发送天气预报邮件的实践:

首先,要发送天气预报信息就必须要从网络上获取到天气预报的信息,这里的天气预报信息我选择的源站是:中央气象台。我们以杭州市为例,页面数据截图如下:

精细预报数据截图如下:

从数据粒度来看,预报是每3小时更新一次的,这就给我们提供了一下邮件发送的间隔时间依据,3小时自动发送一次就好了。

首先,我们获取了一下所需要的数据,存储为json的数据格式,截图如下:

爬虫的爬取间隔也是3小时爬取一次,每次爬取结束后会以当次爬取的时间戳为主键进行json数据的解析和存储。

接下来我们要对爬取到本地的json数据进行解析,生成邮件的文本内容信息,具体如下:

def jsonDataParse(city,data='results/hangzhou.json'):'''气象 json 数据解析'''name=data.split('/')[-1].strip().split('.')[0].strip()with open(data) as f:data_dict=json.load(f)date_list=data_dict.keys()key=max(date_list)#温度temperate_dict=data_dict[key]['temperate']['three_hour']temperate=temperate_dict[min(temperate_dict.keys())]#风向ws_dict=data_dict[key]['wind_speed']['three_hour']WS=ws_dict[min(ws_dict.keys())]#风速wd_dict=data_dict[key]['wind_direction']['three_hour']WD=wd_dict[min(wd_dict.keys())]#湿度hum_dict=data_dict[key]['humidity']['three_hour']humidity=hum_dict[min(hum_dict.keys())]#降水量water_dict=data_dict[key]['water']['three_hour']water=str(water_dict[min(water_dict.keys())])print dataprint 'temperate: ',temperateprint 'wind_speed: ',WSprint 'wind_direction: ',WDprint 'humidity: ',humidityprint 'water: ',waternow_time=str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))info=u"当前城市:"+city+'<br/>'+u"当前温度:"+temperate+'<br/>'+u"当前风速:"+\WS+'<br/>'+u"当前风向:"+WD+'<br/>'+u"当前湿度:"+humidity+'<br/>'+\u"当前降水量:"+water+'<br/>'+u"当前时间:"+now_timereturn info

中间有一个地方需要解释一下就是,之前我分行一直使用的是'\n',但是发现邮件的内容一直换行失败,这里查了一下在网页中显示的内容要换行的话,这里就必须使用'<br/>',亲测可行。上面的代码功能就是定时解析本地的文件数据,生成最新的天气预报信息,构建QQ邮件内容。

接下来我们开始实现QQ邮件自动发送功能,在实现这部门功能之前首先要开启POP3协议之后获取到自己QQ邮箱的客户端授权码,具体操作可以参考这篇文章。具体代码实现如下:

def autoSendEmail(receiver,message):'''自动发送邮件通知receiver:邮件的接受者,如:1111111111@qq.com'''host='smtp.qq.com'port=25sender='你的发件邮箱号码'  pwd='你的客户端授权密码'body='<h2>叮咚:</h2><p>'+message+'</p>'msg=MIMEText(body,'html',_charset="utf-8")msg['subject']='最新的杭州市天气状况来啦,小祖宗请注意接收!'msg['from']=sendermsg['to']=receiverserver=smtplib.SMTP(host,port)server.login(sender,pwd)  #开始登陆邮箱,并发送邮件server.sendmail(sender, receiver, msg.as_string())server.quit()print 'Send Weather Email Sussess!!!'

至此,我们的数据获取与解析工作、QQ邮件自动发送功能都已经完成了,接下来就可以正式实践一下了。结果截图如下所示: 
          

如果想紧跟官网天气预报的更新脚步的话,可以做一个简单的定时程序,每3小时执行一下内容解析与邮件发送,这样你的“小祖宗”就可以每天实时地收到最新的天气预报信息了。

温馨提示:

如果邮件未收到记得查看下是否在垃圾邮件里面哈,我最开始就是被邮箱自动放到垃圾邮件里面了。

愉快的小实践,记录一下,今天天气明媚,万里无云哈。

python实现自动向QQ邮箱发送天气预报邮件相关推荐

  1. python向自己qq邮件发信息_python实现自动向QQ邮箱发送天气预报邮件

    今天是清明长假的最后一天了,趁着这点空余的时间想来做点有意思的东西,之前做12306自动购票程序的时候就想加入一个功能,就是抢票成功后实现自动向指定的邮箱里面发送提醒信息的邮件,功能还是很简单的,今天 ...

  2. java实现通过QQ邮箱发送激活邮件 springBoot

    用户邮件激活 通过QQ邮箱发送激活邮件 soringBoot 本文主要介绍了使用java 调用邮箱发送邮件的功能 首先新建一个springboot项目 pom依赖如下 <parent>&l ...

  3. python实现自动登录qq邮箱,写邮件并发送

    1 编程语言 python 3.5 2 需要安装xlrd库,用来打开Excel文件 3 在命令行中输入 python send.py [接收者邮件地址]   如:python send.py 1234 ...

  4. 腾讯企业 html邮件模板,python连接腾讯企业邮箱发送html邮件

    在工作中难免用到一些自动化的邮件配置,这里用python简单写了一个连接腾讯企业邮箱的脚本邮件代码.备忘下来. # coding=utf-8 import smtplib from email.MIM ...

  5. PHP实现qq邮箱发送自定义邮件

    本文实例讲述了PHP实现发送邮件的方法. 不同类型的邮箱发送邮件的方式也是不同的. 下面我们就先给大家举例介绍qq邮箱开启发送邮件服务的方法. 首先我们登录qq邮箱,打开设置. 然后点击账户 开启PO ...

  6. 使用Python登录QQ邮箱发送QQ邮件

    这真是黑科技啊,原来推送的广告邮件就是这样产生的.好人用来发节日贺卡,给女朋友纪念邮件:坏人会学着发广告,垃圾邮件.我希望大家能学会了做些有趣的有意义的事情. 今天我带大家实现下简单的发邮件功能.我们 ...

  7. python smtp QQ邮箱 发送附件

    质己跑完case 会得到的一个测试报告,然后我要把这个测试报告通过qq邮箱发送到接受人那里,闲话少说 mailto_list = ['caoyong@zlddata.cn'] # 收件人(列表) ma ...

  8. python自动登录qq邮箱_selenium+python实现自动登陆QQ邮箱并发送邮件功能

    本期做一个selenium详细实例,会把我在元素定位中遇到的一些阻塞和经验分享给大家. (浏览器为Chrome) (如果只需要最终的完整代码,请直接跳转到文章最后) 浏览器打开QQ邮箱登录网址 fro ...

  9. python基础编程:selenium+python实现自动登陆QQ邮箱并发送邮件功能

    本期做一个selenium详细实例,会把我在元素定位中遇到的一些阻塞和经验分享给大家. (浏览器为Chrome) (如果只需要最终的完整代码,请直接跳转到文章最后) 浏览器打开QQ邮箱登录网址 QQ邮 ...

  10. java发送消息_通过java给qq邮箱发送信息

    通过java程序给qq邮箱发送信息. 1.第一步:下载mail的jar包:javax.mail.jar 下载地址:https://javaee.github.io/javamail/#Latest_N ...

最新文章

  1. CS131专题-6:图像特征(Blob检测、LoG算子、Harris-Laplacian)
  2. 5G 信令流程 — ULCL 插入流程
  3. android表格布局的使用方法,Android布局(RelativeLayout、TableLayout等)使用方法
  4. HDU 2647 拓扑排序
  5. Airflow 中文文档:写日志
  6. Qt Creator怎样更改默认构建目录
  7. c 普通的文本变成注释文本的快捷键_phpstrom 快捷键,记一下记一下!(life)
  8. [原创]数据库视图介绍和使用
  9. 083 conllections模块
  10. Input鼠标键盘输入
  11. python批量裁剪图片
  12. 从小白到Python大神只需要100天
  13. 聊聊如何做技术战略规划
  14. (ICCV 19) Deep Closest Point: Learning Representations for Point Cloud Registration
  15. 아프리카 BJ 박현서,
  16. 电脑投屏到电视android,电脑怎么投屏到电视?看完这篇文章你就懂了
  17. oracle一列多行转一行多列表示,Oracle 多行转多列,列值转为列名
  18. Android开源控件收集整理
  19. 解读:政务信息资源整合共享难点分析及对策研究
  20. U盘制作启动盘后只显示容量4M的问题解决

热门文章

  1. selenium 自动化工具
  2. [转]微信小程序之购物车功能
  3. BDF开发框架的搭建(摘)
  4. linux命令学习_实验楼(一)
  5. PJzhang:python快速搭建局域网文件共享服务器
  6. Apache Flink 学习教程----持续更新
  7. HDU 3339 In Action(最短路+背包)题解
  8. NIO+SocketChannel+Buffer+Selector 多路复用
  9. 继承中的盲点,成员或者析构函数,成员函数中为什么有时候需要定义,有时候不需要呢,(已解决)...
  10. 每天CookBook之Python-047