第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 利用云服务器自动发送天气预报邮件

利用云服务器自动发送天气预报邮件

时间:2019-07-17 08:48:42

相关推荐

利用云服务器自动发送天气预报邮件

前言

在网上无意中看到一篇文章,是关于利用Python脚本和云服务器自动发送天气预报的,碰巧手里有个闲置的云服务器,闲来无事,就进行了相关的尝试。

详细步骤

1、打开邮箱的SMTP服务,得到授权码。进入邮箱设置应该就可以找到。

2、打开和风天气网站:/docs/api/weather点击跳转,直接注册账号就行,然后到控制台创建应用,再添加key搞定,调用API的时候会用到这个key值,要记住。

将相关信息填入以下代码,即可执行。

代码如下:

import requestsimport timeimport smtplibfrom email.mime.text import MIMETextfrom email.header import Headerfrom email.utils import formataddrfrom email.mime.multipart import MIMEMultipartimport randomdef send_email(subject,content):msg = MIMEMultipart()password = ''# 自己申请邮箱授权码from_addr = '' #发送者邮箱smtp_server = '' #邮箱服务器to_addr = '' #接收者邮箱,可以发给自己server = smtplib.SMTP_SSL(smtp_server, '465') # 开启发信服务,这里用的是加密传输server.connect(smtp_server, '465') # 服务器连接,服务器地址、接口server.login(from_addr, password)msg['Subject'] = subject #邮件主题msg['From']=formataddr(["今日天气",from_addr]) #修改发件人显示的名称msg.attach(MIMEText(content.strip(), 'plain', 'utf-8'))server.sendmail(from_addr, to_addr, msg.as_string())print('发送邮件成功')server.quit() # 关闭服务器time.sleep(15)def get_weather(city_id):key='' #自己的keyurl='https://free-/s6/weather/forecast?location={0}&key={1}'.format(city_id,key) headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}r=requests.get(url,headers=headers)data=r.json()city=data['HeWeather6'][0]['basic']['location'] #城市forecast_time=data['HeWeather6'][0]['update']['loc'] #预报时间date=data['HeWeather6'][0]['daily_forecast'][0]['date'] #日期day_weather=data['HeWeather6'][0]['daily_forecast'][0]['cond_txt_d'] #白天天气night_weather=data['HeWeather6'][0]['daily_forecast'][0]['cond_txt_n'] #晚间天气wind_dir=data['HeWeather6'][0]['daily_forecast'][0]['wind_dir'] #风向wind_sc=data['HeWeather6'][0]['daily_forecast'][0]['wind_sc'] #风力wind_spd=data['HeWeather6'][0]['daily_forecast'][0]['wind_spd'] #风速 公里/小时tmp_min=data['HeWeather6'][0]['daily_forecast'][0]['tmp_min'] #最低气温tmp_max=data['HeWeather6'][0]['daily_forecast'][0]['tmp_max'] #最高气温sr=data['HeWeather6'][0]['daily_forecast'][0]['sr'] #日出时间ss=data['HeWeather6'][0]['daily_forecast'][0]['ss'] #日落时间mr=data['HeWeather6'][0]['daily_forecast'][0]['mr'] #月出时间ms=data['HeWeather6'][0]['daily_forecast'][0]['ms'] #月落时间content='\n日期:{0}\n白天天气:{1} 晚间天气:{2}\n最低气温:{3} 最高气温:{4}\n风向:{5} 风力:{6} 风速:{7}\n日出时间:{8} 日落时间:{9}\n月出时间:{10} 月落时间:{11}'.format(date,day_weather,night_weather,tmp_min,tmp_max,wind_dir,wind_sc,wind_spd,sr,ss,mr,ms)subject='城市:{0} 预报时间:{1}'.format(city,forecast_time)return subject,contentif __name__ == '__main__':city_list=['101180101'] #要的城市代号,可以填入多个for city in city_list:subject,content=get_weather(city)send_email(subject,content)

运行结果如下图所示

可以利用crontab在服务器创建定时任务,每天定时发送邮件。

0 7 * * * python weather.py 意思是每天7:00运行该程序。

这样就可以每天早上定时收到天气预报的邮件了。

主要是借鉴了这位大佬的博客。

/sinat_39629323/article/details/103278406

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。