用Python定时发送天气邮件
作者:See?you?again31 发布时间:2022-09-22 15:11:31
标签: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
投稿
猜你喜欢
- 我正在开发一个档案管理系统,需要从数据库中同时调出图像及相关的文字说明,可我只做到了单纯地显示图片,像有一个数据库CHUNFENG,在数据库
- 跟着节奏继续来探索fixtures的灵活性。一、一个测试函数/fixture一次请求多个fixture在测试函数和fixture函数中,每一
- 为了方便使用分类,我定义了一个分类表category,里面字段是id(自动编号) cat_name(分类名) pare
- 简单邮件传输协议(SMTP)是一种协议,用于处理在电子邮件服务器之间发送电子邮件和路由电子邮件。Python提供了smtplib模块,该模块
- 看到Django和layim实现websocketde资料很少,自己就琢磨了下,顺便搭建出来了。自己要去找闲心大神授权呀。先来看图这是初次搭
- 目录前言一、常用命令二、嗅探数据包三、构造数据包四、各个协议用法五、发包,收包六、SYN半开式扫描七、数据包序列化,反序列化八、数据包与字符
- 建造者模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。基本思想某类产品的构建由很多复杂组件组成;这些组件中的
- 一般情况下x,y,z = 1,2,3print("x:",x)print("y:",y)print(
- 这个decorator是什么意思呢?很简单,它接受一个log的参数,即传入logger对象。然后它会先把函数名打印出来,接下来,会利用enu
- 一、QQ邮箱SSL发送获取qq授权码ssl发送方式不是使用邮箱密码,而是需要授权码,具体步骤如下:登录发送人qq邮箱>>设置&g
- nonzero函数返回非零元素的目录。返回值为元组, 两个值分别为两个维度, 包含了相应维度上非零元素的目录值。 import
- 需求在画布上用鼠标画图,可以画圆或矩形,按m键在两种模式下切换。左键按下时开始画图,移动到哪儿画到哪儿,左键释放时结束画图。实现思想用鼠标画
- OK,今天我们来学习一下 python 中的日志模块,日志模块也是我们日后的开发工作中使用率很高的模块之一,接下来们就看一看今天具体要学习日
- 整数在Python中,整数(integer)是一种内置数据类型,用于表示整数值。Python中的整数类型可以表示任意大小的整数,而不需要考虑
- osql 工具是一个 Microsoft Windows 32 命令提示符工具,您可以使用它运行 Transact-SQL 语句和脚本文件。
- 首先,自学Python是能够找到相关工作的。Python语言在近几年的上升趋势非常明显,语言生态也越来越健全,在Web开发、大数据开发、人工
- 奥运来了,三大门户网站都加上了奥运主题。加上下面代码你的网站也拥有奥运主题了:<style type="text/
- 前言很多人会使用postman工具,或者熟悉python,但不一定会使用python来编写测试用例脚本,postman里面可以完整的将pyt
- 今天一个同事报告一个问题,表都不能使用了,检查了一下,发现问题 db2 => select * from testACTNO ACTK
- 一、Monkey测试简介Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackbal