网络编程
位置:首页>> 网络编程>> Python编程>> 用Python定时发送天气邮件

用Python定时发送天气邮件

作者:See?you?again31  发布时间:2022-09-22 15:11:31 

标签:python,邮件,天气

效果如图 

用Python定时发送天气邮件

一、获取天气

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

二、获取金山词霸每日一句

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

def getSweetWord():
   url = 'https://chp.shadiao.app/api.php'
   res = requests.get(url)
   return res.text

四、发送邮件

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

五、组织信息,并发送

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系统设置定时启动程序。

来源:https://blog.csdn.net/weixin_62266352/article/details/122777546

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com