python向自己qq邮件发信息_python实现自动向QQ邮箱发送天气预报邮件
今天是清明长假的最后一天了,趁着这点空余的时间想来做点有意思的东西,之前做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 data
print 'temperate: ',temperate
print 'wind_speed: ',WS
print 'wind_direction: ',WD
print 'humidity: ',humidity
print 'water: ',water
now_time=str(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
info=u"当前城市:"+city+'
'+u"当前温度:"+temperate+'
'+u"当前风速:"+\
WS+'
'+u"当前风向:"+WD+'
'+u"当前湿度:"+humidity+'
'+\
u"当前降水量:"+water+'
'+u"当前时间:"+now_time
return info
中间有一个地方需要解释一下就是,之前我分行一直使用的是'\n',但是发现邮件的内容一直换行失败,这里查了一下在网页中显示的内容要换行的话,这里就必须使用'
',亲测可行。上面的代码功能就是定时解析本地的文件数据,生成最新的天气预报信息,构建QQ邮件内容。
接下来我们开始实现QQ邮件自动发送功能,在实现这部门功能之前首先要开启POP3协议之后获取到自己QQ邮箱的客户端授权码,具体操作可以参考这篇文章。具体代码实现如下:
def autoSendEmail(receiver,message):
'''
自动发送邮件通知
receiver:邮件的接受者,如:1111111111@qq.com
'''
host='smtp.qq.com'
port=25
sender='你的发件邮箱号码'
pwd='你的客户端授权密码'
body='
叮咚:
'+message+'
'
msg=MIMEText(body,'html',_charset="utf-8")
msg['subject']='最新的杭州市天气状况来啦,小祖宗请注意接收!'
msg['from']=sender
msg['to']=receiver
server=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邮件发信息_python实现自动向QQ邮箱发送天气预报邮件相关推荐
- java实现通过QQ邮箱发送激活邮件 springBoot
用户邮件激活 通过QQ邮箱发送激活邮件 soringBoot 本文主要介绍了使用java 调用邮箱发送邮件的功能 首先新建一个springboot项目 pom依赖如下 <parent>&l ...
- python写节日贺卡_Python什么方法可以通过邮箱发送贺卡或明信片
请问,使用python可以发送贺卡或明信片吗? 还是只能发送普通邮件? 自带的smtplib本身就支持发送HTML邮件def send_mail(self, recipients, subject, ...
- 【Zabbix】配置 腾讯企业邮箱 发送报警邮件
Zabbix 配置 腾讯企业邮箱 发送报警邮件
- python向自己qq邮箱发信息_python 向qq邮箱发邮件
#coding:utf-8 ''' Created on 2017-1-12 @author: xiaochun ''' import smtplib from email.mime.text imp ...
- python向自己qq邮箱发信息_Python实现给qq邮箱发送邮件的方法
本文实例讲述了Python实现给qq邮箱发送邮件的方法..具体实现方法如下: #-*-coding:utf-8-*- #======================================== ...
- 利用python itchat给女朋友定时发信息
利用itchat给女朋友定时发信息 涉及到的技术有itchat,redis,mysql,最主要的还是mysql咯,当然咯,这么多东西,我就只介绍我代码需要用到的,其他的,如果需要了解的话,就需要看参考 ...
- 腾讯企业 html邮件模板,python连接腾讯企业邮箱发送html邮件
在工作中难免用到一些自动化的邮件配置,这里用python简单写了一个连接腾讯企业邮箱的脚本邮件代码.备忘下来. # coding=utf-8 import smtplib from email.MIM ...
- 邮件附件att00.html,我的网易163邮箱收到的邮件里有个这样的附件ATT00002.bin打不开,到底是什么?...
我的网易163邮箱收到的邮件里有个这样的附件ATT00002.bin打不开,到底是什么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一 ...
- python向自己qq邮箱发信息_python使用QQ邮箱发送邮件
使用QQ邮箱发邮件比较繁琐,SMTP密码是动态的 向下滚动,找到smtp,点击开启 发送短信进行验证 腾讯smtp服务器: smtp:smtp.qq.com 端口:465 代码如下: # coding ...
最新文章
- 巴克码相关器的verilog HDL设计
- 技术团队新官上任之中层篇
- [转]opensuse 更新源
- java后台日期怎么去重,JAVA后台业务实现去重
- 服务器做文件共享服务特点,服务器主机做共享文件
- fedora 用安装 DVD 建立本地 yum 源
- python的继承用法_python之继承中组合用法与菱形继承关系查找法
- 06512oracle数据库,ORA-06512 – 专业Oracle数据库恢复,或许是您恢复数据的最后机会@phone:13429648788 - 专业Oracle数据库恢复技术支持...
- fiddler基础入门
- javaee互联网轻量级框架整合开发_企业开发:Spring框架的简易、高效切入篇
- 解决问题--java.lang.ClassNotFoundException -- redis抛出
- 【论文阅读】Attention-based Deep Multiple Instance Learning
- 三点定位法原理及实现——蓝牙定位
- Unity将相机内容输出成图片
- 使用GitLab CI/CD进行自动测试和部署
- 面试必备:虾皮服务端15连问
- Eclipse版本代号
- Java源文件编译出错:类文件包含错误的类 请删除该文件或确保文件位于正确的类路径子目录中
- 简单搜索引擎使用技巧
- JMeter发送数据到Kafka