# Py编写自动化脚本每天发送邮件提醒天气(舔狗必备)

2022-11-11 14:45:28 浏览数 (2)

首先获取天气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("发送成功")

0 人点赞