Python实现qq邮箱天气提醒推送

Python实现每一小时进行天气查询,若有雨,发送QQ邮箱提醒功能

import smtplib
from email.mime.text import MIMEText
import requests
from lxml import etree
from apscheduler.schedulers.blocking import BlockingScheduler

def send_email():
    url = f'https://www.tianqishi.com/leling.html'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
    }
    res_data = requests.get(url=url, headers=headers)
    tree = etree.HTML(res_data.text)
    tianqijianbao = tree.xpath('//div[@class="jdjianjie"]//p')[0]
    he = tree.xpath('(//div[@class="air-quality pd0"])[1]//font')
    suggest = tree.xpath('(//div[@class="air-quality pd0"])[2]//font')
    # 设置邮箱账号
    account = "你的邮箱@qq.com"
    # 设置邮箱授权码
    token = "qq的smtp代码 "
    # 实例化smtp对象,设置邮箱服务器,端口
    smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)

    # 登录qq邮箱
    smtp.login(account, token)
    # 设置要发送的文本
    content = tianqijianbao.text+'\n'+f"【健康影响】{he[0].text}\n【建议措施】{suggest[0].text}"
    # 创建邮件对象,plain是文本类型
    email_content = MIMEText(content, 'plain', 'utf-8')

    # 设置发送者信息
    email_content['From'] = '你的邮箱@qq.com'
    # 设置接受者信息
    email_content['To'] = '自定义昵称'
    # 设置邮件标题
    email_content['Subject'] = '来自他的一封信,有雨,风紧,撤乎'

    # 有雨发送邮件
    if "雨" in content:
        smtp.sendmail(account, '她的邮箱@qq.com', email_content.as_string())
    # 关闭邮箱服务
    smtp.quit()


if __name__ == '__main__':
    # 创建调度器
    scheduler = BlockingScheduler()

    # 添加任务,每5秒执行一次
    scheduler.add_job(send_email, 'interval', seconds=3600)

    # 启动调度器
    scheduler.start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/584420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

以全栈智算拥抱生态,为AIGC种一棵向上生长的巨榕

榕树,被称为百木之王。它既有极深的根,又有繁茂的叶。只要一棵榕树长成,就能够独木成林,遮天蔽日。更可贵的是,榕树可以为树荫下繁茂的生态提供支撑,形成“一榕生,万物长”的格局。 开年以来&am…

MySQL中SELECT语句的执行过程

2.1.1. 一条SELECT语句的执行过程 MySQL 的架构共分为两层:Server 层和存储引擎层 Server层负责建立连接、分析和执行SQL存储引擎层负责数据的存储和提取,支持 InnoDB、MyISAM、Memory 等多个存储引擎,MySQL5.5以后默认使用InnoDB&#xff0…

set_input_delay的理解

1,set_input_delay约束理解 input_delay是指输入的数据到达FPGA的pad引脚时相对于时钟边沿的延迟有多大,单位是ns,数值可以是正,也可以是负。通过set_input_delay约束告诉编译器输入时钟和输入数据的相位关系。如下图所示假设时钟…

RSA加密---java和node兼容版(可直接复制使用)

目录 背景 实现 一、node代码 1、引入依赖 2、生成公钥和私钥 3、生成工具类 二、java代码 背景 本来项目的后端是node,里面登录接口用的是后端生成RSA公钥和私钥,公钥给前端网页用来加密,node后端解密,一切很和谐&#x…

Flexible布局在Web前端开发中的实际应用

随着Web前端技术的不断发展,Flexible布局(弹性布局)已成为现代网页设计中不可或缺的一部分。它提供了一种高效、灵活的方式来组织和管理页面元素,使开发者能够轻松应对各种复杂的布局需求。本文将通过一个实际的应用案例来介绍Fle…

鸿蒙内核源码分析(汇编基础篇) | CPU在哪里打卡上班

本篇通过拆解一段很简单的汇编代码来快速认识汇编,为读懂鸿蒙汇编打基础.系列篇后续将逐个剖析鸿蒙的汇编文件. 汇编很简单 第一: 要认定汇编语言一定是简单的,没有高深的东西,无非就是数据的搬来搬去,运行时数据主要…

阿里云服务器(Ubuntu22)上的MySQL8更改为大小写不敏感

因为windows上默认的mysql8.0是大小写不敏感的,部署到服务器上之后发现ubuntu默认的是大小写敏感,所以为了不更改代码,需要将mysql数据库设置为大小写不敏感的。 !!!重要一定要做好数据库的备份&#xff0…

【Vue3】openlayers加载瓦片地图并手动标记坐标点

目录 一、创建Vue3项目 二、openlayers加载瓦片地图(引js文件版) 2.1 将以下的文件复制到public下 2.2 index.html引入ol脚本 2.3 删除项目自带的HelloWorld.vue,创建Map.vue 2.4 编码Map.vue 2.5 修改App.vue 2.6 启动项目测试 三、…

与Apollo共创生态:Apollo 7周年大会带给我的启发和心得

Apollo 7周年大会 前不久的Apollo 7周年大会,吸引到我这个对自动驾驶有着浓厚兴趣的开发者,真的精彩,受益匪浅。Apollo 7周年大会展示了Apollo在自动驾驶领域的创新成果,探讨自动驾驶技术的未来发展趋势,并推动自动驾…

关键技术自主可控,中国移动发布大云磐石DPU芯片,速率达400Gbps

4月28日,中国移动在2024算力网络大会上正式发布大云磐石DPU,该芯片带宽达到400Gbps,为国内领先水平,将应用于移动云新一代大云磐石DPU产品,实现关键技术自主可控。 据介绍,DPU是一种专注于数据处理的处理器…

Python多线程并不是真的并行执行

Python多线程虽然能够利用多个CPU核执行计算,但并不能真正执行多线程并行计算。因为在Python中,有一个全局解释锁(GlobalInterpreter Lock,GIL),该锁的存在使得在同一个时间只有一个线程执行任务&#xff0…

KKView远程控制2.0版本发布,TeamViewer面临巨大挑战

KKView远程控制2.0版本发布,TeamViewer面临巨大挑战 近日,备受瞩目的远程控制软件KKView发布了其全新2.0版本,KKView以其独特的创新性和用户友好的设计,为远程办公、远程培训等领域提供了更加高效、便捷的解决方案。 KKView远程…

DVWA靶场

DVWA是指Damn Vulnerable Web Application,是一个用于教育和训练网络安全人员的虚拟漏洞应用程序。DVWA模拟了一个包含了多种常见Web安全漏洞的虚拟环境,包括SQL注入、XSS攻击、CSRF攻击等等。通过使用DVWA,安全人员可以学习和实践各种Web安全…

c#数据库: 8.在窗体上显示学生信息

以上一章学生信息表为例,首先将查询的学生信息存储到数据集中,然后将数据集与数据显示控件绑定,从而实现学生信息在窗体上的显示 (1)创建一个名为StudentGridView的窗体应用程序,为窗体添加一个DataGridVi…

OSI 模型

OSI参考模型包括什么: OSI 参考模型分为七层从下往上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应 用层 应用层 : 应用层是 OSI 标准模型的最顶层,是直接为应用进程提供服务的。其作用是在实现多个系统应用…

2024年十五届蓝桥杯省赛大学B组真题(Java完整版)

2024年十五届蓝桥杯省赛大学B组真题(Java) 前言: 赛后一直犹豫要不要对比赛进行复盘出个题解,拖到了现在,终于也是等到比赛结果出来,看到没有辜负个人期望成功取得省一,决定在国赛前对省赛进行…

【网络原理】UDP协议 | UDP报文格式 | 校验和 | UDP的特点 | 应用层的自定义格式

文章目录 一、UDP协议1.UDP的传输流程发送方接收方 2.UDP协议报文格式:长度受限校验和如何校验:CRC算法:循环冗余算法md5算法: 2.UDP的特点 二、开发中常见的自定义格式1.xml(古老)2.json(最流行…

nn.TransformerEncoderLayer详细解释,使用方法!!

nn.TransformerEncoderLayer nn.TransformerEncoderLayer 是 PyTorch 的 torch.nn 模块中提供的一个类,用于实现 Transformer 编码器的一个单独的层。Transformer 编码器层通常包括一个自注意力机制和一个前馈神经网络,中间可能还包含层归一化&#xff…

uniapp关于iconfont字体图标使用

1、打开[阿里巴巴矢量图标库](https://www.iconfont.cn/),选择需要的图标添加到购物车 2、点开购物车,将图标添加到项目 3、点开项目,点击下载至本地,会得到一个download.zip包 4、解压download包 5、将包里的iconfont.css和iconf…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-8.1--C语言LED驱动程序

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…
最新文章