今天是清明长假的最后一天了,趁着这点空余的时间想来做点有意思的东西,之前做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邮箱发送天气预报邮件相关推荐

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

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

  2. python写节日贺卡_Python什么方法可以通过邮箱发送贺卡或明信片

    请问,使用python可以发送贺卡或明信片吗? 还是只能发送普通邮件? 自带的smtplib本身就支持发送HTML邮件def send_mail(self, recipients, subject, ...

  3. 【Zabbix】配置 腾讯企业邮箱 发送报警邮件

    Zabbix 配置 腾讯企业邮箱 发送报警邮件

  4. python向自己qq邮箱发信息_python 向qq邮箱发邮件

    #coding:utf-8 ''' Created on 2017-1-12 @author: xiaochun ''' import smtplib from email.mime.text imp ...

  5. python向自己qq邮箱发信息_Python实现给qq邮箱发送邮件的方法

    本文实例讲述了Python实现给qq邮箱发送邮件的方法..具体实现方法如下: #-*-coding:utf-8-*- #======================================== ...

  6. 利用python itchat给女朋友定时发信息

    利用itchat给女朋友定时发信息 涉及到的技术有itchat,redis,mysql,最主要的还是mysql咯,当然咯,这么多东西,我就只介绍我代码需要用到的,其他的,如果需要了解的话,就需要看参考 ...

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

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

  8. 邮件附件att00.html,我的网易163邮箱收到的邮件里有个这样的附件ATT00002.bin打不开,到底是什么?...

    我的网易163邮箱收到的邮件里有个这样的附件ATT00002.bin打不开,到底是什么?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一 ...

  9. python向自己qq邮箱发信息_python使用QQ邮箱发送邮件

    使用QQ邮箱发邮件比较繁琐,SMTP密码是动态的 向下滚动,找到smtp,点击开启 发送短信进行验证 腾讯smtp服务器: smtp:smtp.qq.com 端口:465 代码如下: # coding ...

最新文章

  1. 巴克码相关器的verilog HDL设计
  2. 技术团队新官上任之中层篇
  3. [转]opensuse 更新源
  4. java后台日期怎么去重,JAVA后台业务实现去重
  5. 服务器做文件共享服务特点,服务器主机做共享文件
  6. fedora 用安装 DVD 建立本地 yum 源
  7. python的继承用法_python之继承中组合用法与菱形继承关系查找法
  8. 06512oracle数据库,ORA-06512 – 专业Oracle数据库恢复,或许是您恢复数据的最后机会@phone:13429648788 - 专业Oracle数据库恢复技术支持...
  9. fiddler基础入门
  10. javaee互联网轻量级框架整合开发_企业开发:Spring框架的简易、高效切入篇
  11. 解决问题--java.lang.ClassNotFoundException -- redis抛出
  12. 【论文阅读】Attention-based Deep Multiple Instance Learning
  13. 三点定位法原理及实现——蓝牙定位
  14. Unity将相机内容输出成图片
  15. 使用GitLab CI/CD进行自动测试和部署
  16. 面试必备:虾皮服务端15连问
  17. Eclipse版本代号
  18. Java源文件编译出错:类文件包含错误的类 请删除该文件或确保文件位于正确的类路径子目录中
  19. 简单搜索引擎使用技巧
  20. JMeter发送数据到Kafka

热门文章

  1. easyExcel设置水印
  2. css display:flex详解
  3. 男神网络红人莫小涛2022生活百度图片大全
  4. 移动WEB学习 - 字体图标、平面转换、渐变
  5. Pandas 面板Panel
  6. visual studio(vs)2022如何在解决方案中自动配置文件路径(如何向解决方案中批量添加文件)(如何将修改路径之后的的源文件添加到解决方案中)
  7. 网页中title乱码问题解决方案
  8. java中设置5秒后跳转_javaweb 3秒后自动跳转的几种方式
  9. 单人扑克游戏:地城恶棍的Python实现(附实现代码)
  10. 无网络下imac重装系统