首先获取天气api
我这里使用的是和风天气api
先注册一个然后控制台保存自己的唯一key下面要用!!
然后
重点
很多之前的教程都是v6所以已经不适用了
这是正确的链接格式
代码语言:txt复制https://devapi.qweather.com/v7/weather/3d?location=101010100&key=自己的key&gzip=n
后面gzip=n是因为请求后是zip格式加上这个会自动解压缩
location是地区id,自己网上查一下就有
在有了数据后开始编写脚本:
py拿到get拿到数据后需要json处理一下
并且获取json中的数据是需要用'name'这种格式的上面是例子
自己拿到数据后拼接一下就行
编写发送的脚本:
代码语言:txt复制if __name__ == "__main__":
# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'zzzzyzzzz@qq.com'
password = '自己的key'
# 收信方邮箱
to_addr = '自己的@qq.com,别人的qq邮箱,'
# 发信服务器
smtp_server = 'smtp.qq.com'
# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
con = get_weather_data()
msg = MIMEText(con)
# 邮件头信息
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = Header('Have a good day!') //这个是邮件标题
# 开启发信服务,这里使用的是加密传输
server= smtplib.SMTP_SSL("smtp.qq.com",465)
server.login(from_addr,password)
server.sendmail(from_addr,to_addr.split(','),msg.as_string())
print("发送成功")
由于msgto接受的是字符串
但senmail第二个参数是数组,这里需要.split(',')一下。这是一个坑
这个是开启smtp服务的过程自己在邮箱开一下,这里用qq做例子,我使用的是第二个
记着保存自己的key!!
最后:
自动每日准时发送需要一个准时的舔狗
代码语言:txt复制 或者 看我上一篇文章
下面贴完整的代码:
代码语言:python代码运行次数:0复制import time
from email.header import Header
import requests
import smtplib
from email.mime.text import MIMEText
//地区自己设置一下
url='https://devapi.qweather.com/v7/weather/3d?location=101010100&key=自己的Keyf&gzip=n'
today_time = time.strftime('%Y-%m-%d', time.localtime(time.time()))
def get_weather_data():
res = requests.get(url).json()
# res.encoding = 'utf-8'
result = res['daily'][0]
# print(result)
# location = '地区'
city = 'Have a good day ❛‿˂̵✧ n'
names = ['城市', '时间', '天气状况', '最高温', '最低温', '日出', '日落']
date = result['fxDate'] ' '
cond = result['textDay'] 'n'
max = '最高温' result['tempMax'] '度' ' '
min = '最低温' result['tempMin'] '度' 'n'
sr = '日出' result['sunrise'] ' '
ss = '日落' result['sunset']
alert = ''
if('雨' in cond):
alert = '可能下雨记得带伞!!n'
res = city date cond alert max min sr ss
print(res)
return res
if __name__ == "__main__":
# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = '自己qq@qq.com'
password = 'key'
# 收信方邮箱
to_addr = 'qq邮箱'
# 发信服务器
smtp_server = 'smtp.qq.com'
# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
con = get_weather_data()
msg = MIMEText(con)
# 邮件头信息
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = Header('Have a good day!')
# 开启发信服务,这里使用的是加密传输
server= smtplib.SMTP_SSL("smtp.qq.com",465)
server.login(from_addr,password)
server.sendmail(from_addr,to_addr.split(','),msg.as_string())
print("发送成功")