效果如图
一、获取天气
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
def getWeather1(city): try : appid = os.environ[ "TIANQI_APPID" ] appsecret = os.environ[ "TIANQI_APPSEC" ] except KeyError: appid = 'x' x 'x' x' #www.tianqiapi.com申请的appid,有免费 api appsecret = 'xxxx' #在www.tiaSnqiapi.com申请的appsecret url = 'https://tianqiapi.com/api?version=v1&city={city}&appid={appid}&appsecret={appsecret}' . format (city = city, appid = appid, appsecret = appsecret) res = requests.get(url) if res.json().get( "errcode" , 0 ) > 0 : print (res.json().get( "errmsg" )) exit( 0 ) data = res.json()[ 'data' ] weather = { 'today' : data[ 0 ], 'tomorrow' : data[ 1 ], 'aftertomorrow' : data[ 2 ] } today = weather[ 'today' ] tomorrow = weather[ 'tomorrow' ] aftertomorrow = weather[ 'aftertomorrow' ] today_avg = ( int (today[ 'tem1' ][: - 1 ]) + int (today[ 'tem2' ][: - 1 ])) / 2 tomorrow_avg = ( int (tomorrow[ 'tem1' ][: - 1 ]) + int (tomorrow[ 'tem2' ][: - 1 ])) / 2 wdc = '紫外线指数:' + today[ 'index' ][ 0 ][ 'level' ] + '\n' + \ '穿衣指数:' + today[ 'index' ][ 3 ][ 'desc' ] + '\n' wdc + = 'tips:' + today[ 'air_tips' ] today_w = '今天 {} {}/{} 风力:{} 空气指数: {}/{} 日出日落: {}/{}' . format (today[ 'wea' ], today[ 'tem1' ], today[ 'tem2' ],today[ 'win_speed' ],today[ 'air' ], today[ 'air_level' ], today[ 'sunrise' ], today[ 'sunset' ]) tomorrow_w = '明天 {} {}/{} 风力:{} 空气指数:{}/{} 日出日落: {}/{}' . format (tomorrow[ 'wea' ], tomorrow[ 'tem1' ], tomorrow[ 'tem2' ],tomorrow[ 'win_speed' ],tomorrow[ 'air' ], tomorrow[ 'air_level' ], tomorrow[ 'sunrise' ], tomorrow[ 'sunset' ]) aftertomorrow_w = '后天 {} {}/{} 风力:{} 空气指数:{}/{} 日出日落: {}/{}' . format (aftertomorrow[ 'wea' ], aftertomorrow[ 'tem1' ], aftertomorrow[ 'tem2' ],aftertomorrow[ 'win_speed' ],aftertomorrow[ 'air' ], aftertomorrow[ 'air_level' ], aftertomorrow[ 'sunrise' ], aftertomorrow[ 'sunset' ]) todaytime = datetime.now() starttime = datetime.strptime( '2020-08-21' , '%Y-%m-%d' ) days = (todaytime - starttime).days todaydate = str (todaytime.year) + '年' + str (todaytime.month) + '月' + str (todaytime.day) + '日' total = '早安! 亲爱的xx,xxxxx~愿你每天开开心心!\n' + \ '今天是:' + todaydate + ',' + '是和xxx在一起的第' + str (days) + '天,mua~\n' + \ '近日天气如下,xxx要注意保暖哦!\n' + \ today_w + '\n' + wdc + '\n' + \ tomorrow_w + '\n' + \ aftertomorrow_w return total |
二、获取金山词霸每日一句
1
2
3
4
5
6
7
8
9
|
def get_news(): # 获取金山词霸的每日一句的英文和翻译 url = "http://open.iciba.com/dsapi/" r = requests.get(url) content = r.json()[ 'content' ] note = r.json()[ 'note' ] news = content + '\n' + \ note return str (news) |
三、获取Sweet word
1
2
3
4
|
def getSweetWord(): url = 'https://chp.shadiao.app/api.php' res = requests.get(url) return res.text |
四、发送邮件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def sendemail(toaddr = ' ', message=' '): fromaddr = 'xxxxx@qq.com' # 你的邮箱 password = 'xxxxxfslfbfgg' # 你的密码,注意不是qq密码 smtp_server = 'smtp.qq.com' # smtp地址 msg = MIMEText(message, 'plain' , 'utf-8' ) msg[ 'From' ] = _format_addr( 'xxx <%s>' % fromaddr) msg[ 'To' ] = _format_addr( 'xxx <%s>' % toaddr) todaytime = datetime.now() starttime = datetime.strptime( '2020-08-21' , '%Y-%m-%d' ) days = (todaytime - starttime).days emailtitle = '爱你的第' + str (days) + '天' msg[ 'Subject' ] = Header(emailtitle, 'utf-8' ).encode() server = smtplib.SMTP_SSL(smtp_server, 465 ) server.set_debuglevel( 1 ) server.login(fromaddr, password) server.sendmail(fromaddr, [toaddr], msg.as_string()) server.quit() return |
五、组织信息,并发送
1
2
3
4
5
6
7
8
9
10
11
|
def dailymorning(): message = getWeather1( 'xxx' ) + '\n' + \ get_news() + '\n' + \ getSweetWord() + '\n' + \ '来自最爱你xxx' receivers = [[ 'xxxx@qq.com' ], [ 'xxxxxx@qq.com' ]] for i in range ( len (receivers)): dailyemail.sendemail(toaddr = receivers[i], message = message) print ( 'send receiver[{}] success' . format (receivers[i])) |
六、win10系统设置定时启动程序。
到此这篇关于用Python定时发送天气邮件的文章就介绍到这了,更多相关Python发送天气邮件内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_62266352/article/details/122777546