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

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

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

719326dac29466be8e7dce28104149f0.png

精细预报数据截图如下:

9edda7877b0c726a85dab4fbea3cd9d4.png

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

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

9fb3040ad11d448bbda6e9fb154e8c45.png

2d0691fe95e30df80af7f7dac045542b.png

f1efc81e9a690217008cc2691f90ae9b.png

7d8bf6d898098a5e0ea51d553481d66c.png

49bf1695e9bc1837595cb85b8554e2ff.png

爬虫的爬取间隔也是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邮件自动发送功能都已经完成了,接下来就可以正式实践一下了。结果截图如下所示:

2d8d8efb66a790248c856bb4cbe2548b.png

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

温馨提示:

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值