自动化定时发送天气提醒邮件

🎈 博主:一只程序猿子

🎈 博客主页:一只程序猿子 博客主页

🎈 个人介绍:爱好(bushi)编程!

🎈 创作不易:如喜欢麻烦您点个👍或者点个⭐

🎈 欢迎访问我的主页(点我直达)

🎈 除此之外您还可以通过个人名片联系我 👉👉👉👉👉👉

                              

如果您很喜欢我的文章且富有,我说:公主 or 王子 请打赏!!!

额滴名片儿
求打赏🥺

 

 目录

1.前言

2.技术介绍

(1)任务计划程序

(2)Windows批处理程序

(3)天气爬虫程序

(4)自动发邮件程序

3.源码

(1)发送邮件的Python源码:

(2)编写run.bat批处理程序: 

4.创建定时任务

(1)右键单击左下角Windows图标-计算机管理

(2) 创建任务

(3)自定义触发条件:

(4)编辑操作

5.运行测试

(1)运行python程序测试

(2)运行批处理程序测试

(3)定时任务程序运行


1.前言

        本文将介绍使用Windows系统自带的任务计划程序,定时运行一个自动发送天气提醒邮件批处理程序!这个批处理程序中将调用我们提前编写好的Python程序,包含天气信息爬虫程序和自动化发送邮件的程序。

2.技术介绍

(1)任务计划程序

Windows的任务计划程序是一个内置的系统工具,可以帮助用户在Windows操作系统中创建、安排和管理任务。通过任务计划程序,用户可以设定任务的触发条件、执行时间、操作内容等,实现定时启动程序、定时关机、定时备份文件等操作。

任务计划程序可以通过多种方式找到并打开。在Windows的开始菜单中,可以找到“管理工具”或“任务计划程序”选项。另外,用户也可以通过计算机管理、服务器管理器等途径找到任务计划程序。

创建任务计划程序的过程包括以下步骤:

  1. 打开任务计划程序并创建一个新的任务;
  2. 为任务指定名称和描述;
  3. 选择任务的触发条件,比如每天、每周或每月等;
  4. 设置任务的执行时间;
  5. 选择要执行的操作,比如启动程序、关闭计算机等;
  6. 配置任务的其他选项,比如触发器、条件等;
  7. 完成任务的创建并保存。

使用任务计划程序可以方便地实现定时任务的自动化管理,对于需要定时执行任务的Windows用户来说是一个非常实用的工具。

(2)Windows批处理程序

.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令,可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。

批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat 或cmd。比较常见的批处理包含两类:DOS批处理和PS批处理。PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。

更复杂的情况,需要使用if、for、goto等命令控制程序的运行过程,如同C、Basic等高级语言一样。如果需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。

批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序都可以放在批处理文件中运行。

(3)天气爬虫程序

在此之前我已经介绍了如何实现爬取天气信息,具体可以参考以下文章:

Python爬虫-爬取天气信息(1)_天气爬虫_一只程序猿子的博客-CSDN博客

Python爬虫-爬取天气信息(2)_天气爬虫_一只程序猿子的博客-CSDN博客

Python爬虫-爬取天气信息(3)_天气爬虫_一只程序猿子的博客-CSDN博客

(4)自动发邮件程序

在此之前我已经介绍了如何实现Python自动化发送邮件,具体可以参考以下文章:

Python实现发邮件_python 自动发送邮件_一只程序猿子的博客-CSDN博客

3.源码

(1)发送邮件的Python源码:

import smtplib
from email.mime.text import MIMEText
from email.header import Header
import base64
from spider.dingzhi_weather_spader import GetDingZhiWeather
from spider.sk_weather_spider import GetSkWeather# 发件人邮箱
sender = '填写发件人邮箱'
# 发件人邮箱密码(注意不是QQ密码,是授权码)
password = '填写发件人邮箱授权码'
# 收件人邮箱,可以是多个邮箱,使用列表存储
receiver = ['xxx@qq.com']    # 记得换成收件人的邮箱#获取天气
dingzhi_weather = GetDingZhiWeather.get_dingzhi_weather(101220901)
shikuang_weather = GetSkWeather.get_sk_weather(101220901)data = f'''
********************实况天气********************
{shikuang_weather}
********************今日天气********************
{dingzhi_weather}
********************播报完成********************
'''
print(data)# 邮件主题
subject = '天气提醒'
info = data# 发件人昵称,如果昵称包含非ASCII字符,如中文,则请使用base64对昵称进行编码。
nickname = "天气提示助手"
encoded_nickname = str(base64.b64encode(nickname.encode('utf-8'))).replace("b'", "").replace("'", "")message = MIMEText(info, 'plain', 'utf-8')  # 邮件正文
# message['From'] = Header(f'abc <{sender}>')  # 发件人昵称(昵称全为ASCII字符)
message['From'] = Header(f'"=?UTF-8?B?{encoded_nickname}?=" <{sender}>')  # 发件人昵称(昵称包含非ASCII字符,如中文)
message['To'] = Header(receiver[0])    # 收件人昵称
message['Subject'] = Header(subject, 'utf-8')   # 邮件主题# SSL协议端口号要使用465
smtp_ssl_server = 'smtp.qq.com'
smtp_ssl_port = 465try:# 登录SMTP服务器,发送邮件smtpObj = smtplib.SMTP_SSL(smtp_ssl_server, smtp_ssl_port)smtpObj.login(sender, password)smtpObj.sendmail(sender, receiver, message.as_string())print(f"发送给 {receiver} 的邮件发送成功!")
except smtplib.SMTPException as e:print("邮件发送失败!", e)

(2)编写run.bat批处理程序: 

:: 关闭命令回显,即不显示命令本身,只在执行时显示命令结果。
@echo off    

:: 切换当前目录到"E:\PycharmProject\SendEmailDemo",这里的"cd"是改变当前工作目录的命令,"PycharmProject\SendEmailDemo"是要切换到的目录
E: cd PycharmProject\SendEmailDemo  。  

:: 设置环境变量PYTHONPATH,使其包含当前工作目录的路径,并用分号隔开。PYTHONPATH通常用于指定Python解释器搜索模块的路径。
set PYTHONPATH=E:\PycharmProject\SendEmailDemo;%PYTHONPATH%    

:: 使用Python解释器来执行"E:\PycharmProject\SendEmailDemo\sendemail\sendemail.py"这个Python脚本。
E:\PycharmProject\SendEmailDemo\venv\Scripts\python.exe E:\PycharmProject\SendEmailDemo\sendemail\sendemail.py   

:: 退出程序
exit

4.创建定时任务

(1)右键单击左下角Windows图标-计算机管理

(2) 创建任务

(3)自定义触发条件:

(4)编辑操作

        在操作里就是启动run.bat批处理程序 

5.运行测试

(1)运行python程序测试

(2)运行批处理程序测试

        为了方便截图,这里我将批处理程序里最后一行换成pause,目的是暂停批处理程序的执行,直到用户按下任意键才会继续。如果使用exit则运行完毕直接关闭窗口了!

(3)定时任务程序运行

        收件人也收到了邮件提示:        

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置端口安全示例

组网需求 如图1所示&#xff0c;用户PC1、PC2、PC3通过接入设备连接公司网络。为了提高用户接入的安全性&#xff0c;将接入设备Switch的接口使能端口安全功能&#xff0c;并且设置接口学习MAC地址数的上限为接入用户数&#xff0c;这样其他外来人员使用自己带来的PC无法访问公…

华为配置风暴控制示例

组网需求 如下图所示&#xff0c;SwitchA作为二层网络到三层路由器的衔接点&#xff0c;需要防止二层网络转发的广播、未知组播或未知单播报文产生广播风 配置思路 用如下的思路配置风暴控制。 通过在GE0/0/1接口视图下配置风暴控制功能&#xff0c;实现防止二层网络转发的…

城市之眼:数据可视化在智慧城市的角色

作为智慧城市建设的核心组成部分&#xff0c;数据可视化扮演着至关重要的角色。在城市中&#xff0c;数据源源不断地产生&#xff0c;涵盖了从交通流量、环境质量到市民需求等各个方面。而数据可视化作为将这些数据呈现出来的手段&#xff0c;对智慧城市的发展起着关键性的作用…

HarmonyOS架构及关键技术整理

技术解析&#xff1a;鸿蒙系统的底层优势 鸿蒙系统采用了先进的微内核设计&#xff0c;这是一种全新的系统架构&#xff0c;能够更好地适应现代智能设备的多样性和互联性。微内核通过最小化系统的核心功能&#xff0c;提高了系统的安全性和可定制性。此外&#xff0c;鸿蒙系统…

多传感器融合SLAM在自动驾驶方向的初步探索的记录

1. VIO的不可观问题 现有的VIO都是解决的六自由度的问题, 但是对于行驶在路面上的车来说, 通常情况下不会有roll与z方向的自由度, 而且车体模型限制了不可能有纯yaw的变换. 同时由于IMU在Z轴上与roll, pitch上激励不足, 会导致IMU在初始化过程中尺度不准以及重力方向估计错误,…

【Java面试——JVM和调优】

JVM虚拟机和调优相关。 5.1 类加载机制 类加载的生命周期&#xff1f; 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中&#xff0c;加载、验证、准备和初始化这四个阶段发生的顺序是确定的&#xff0c;而解析阶段则不一定&#xff0c;它在某些…

决策树 (人工智能期末复习)

几个重要概念 信息熵&#xff1a;随机事件未按照某个属性的不同取值划分时的熵减去按照某个属性的不同取值划分时的平均 熵。即前后两次熵的差值。 表示事物的混乱程度&#xff0c;熵越大表示混乱程度越大&#xff0c;越小表示混乱程度越小。 对于随机事件&#xff0c;如果它的…

Mysql-全外连接-Union和Union ALL的辨析及练习

mysql不支持FULL JOIN&#xff0c;但是可以用 &#xff08;select 语句1&#xff09; union &#xff08;select 语句2&#xff09;代替 &#x1f436;1. SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意&#xff0c;UNION 内部的 SELECT 语句…

flutter学习-day4-库和库的导入

&#x1f4da; 目录 指定库前缀仅导入库的一部分延迟加载库 本文学习和引用自《Flutter实战第二版》&#xff1a;作者&#xff1a;杜文 1. 指定库前缀 如果导入两个具有冲突标识符的库&#xff0c;则可以为一个或两个库指定前缀。例如&#xff0c;如果 library1 和 library2 …

计算机图形图像技术(图像锐化处理与图像解析)

一、实验原理&#xff1a; 1、拓展Sobel算子锐化 void Sobel(Array src, Array dst, int ddepth, int dx, int dy, int ksize); ①参数&#xff1a;src为输入图像&#xff1b;dst为输出图像&#xff0c;大小和通道数与源图像一致&#xff0c;必要时重建&#xff1b;ddepth为目…

unity 2d 入门 飞翔小鸟 飞翔动作动画描点(六)

1、创建文件夹新建动画控制器 右键->create->Animator controer 给图层创建动画 把创建后的动画控制器拖拽至对应图层 点击window->Animation->Animation 点击创建文件夹 把图片拖拽到这里面&#xff0c;就可以了 然后我们就看在player看到已经把动作挂上去 点…

ChatGPT文书替代论“热”潮背后的“冷”思考

2022年11月底OpenAI推出的人工智能聊天工具ChatGPT仅推出一周就火爆全球&#xff0c;推出两个月&#xff0c;就在全球范围内坐拥1亿用户&#xff0c;根据华尔街消息&#xff0c;OpenAI目前估值已达290亿美元。 认识ChatGPT ChatGPT是由美国成立的人工智能研究公司OpenAI研究开…

MyBatis-Plus 基础操作指南:实现高效的增删改查

引言 大家好&#xff0c;今天我们来聊聊如何使用 MyBatis-Plus&#xff08;接下来简称为 MP&#xff09;&#xff0c;一个流行的 MyBatis 增强工具&#xff0c;来简化和加速我们的数据库操作。如果你是一位初学者&#xff0c;不用担心&#xff0c;我将带你从头到尾详细了解 MP …

华为数通---BFD多跳检测示例

定义 双向转发检测BFD&#xff08;Bidirectional Forwarding Detection&#xff09;是一种全网统一的检测机制&#xff0c;用于快速检测、监控网络中链路或者IP路由的转发连通状况。 目的 为了减小设备故障对业务的影响&#xff0c;提高网络的可靠性&#xff0c;网络设备需要…

leetcode707.设计链表

题目描述 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;next 是指向下一个节点的指针/引用。 如果是双向链表&#xff0c;则还需要属性 prev 以指示链表中的…

时间序列预测 — GRU实现多变量多步光伏预测(Tensorflow)

目录 1 数据处理 1.1 数据集简介 1.2 导入库文件 1.3 数据集处理 1.4 训练数据构造 2 模型训练与预测 2.1 模型训练 2.2 模型多步预测 2.3 预测可视化 1 数据处理 1.1 数据集简介 实验数据集采用数据集7&#xff1a;常州普利司通光伏数据集&#xff08;下载链接&…

安全众测-内网渗透常用的工具和命令

最近参加企业内部的众测&#xff0c;我是一名新手&#xff0c;所以先学习使用工具扫描的方法。如下是我的一些经验。 记住&#xff1a;渗透测试的本质是信息收集&#xff0c;信息越多&#xff0c;出现漏洞的可能性就越大&#xff0c;一直到收集到所有资产为止。 网站的robots.…

ChatGPT对于当今的社会或科技发展有何重要性?

ChatGPT对于当今社会和科技发展的重要性在于&#xff1a; 促进社交交流&#xff1a;ChatGPT可以为人们提供全天候的在线聊天服务&#xff0c;连接人与人之间的沟通交流&#xff0c;改善社交沟通方式。 提高有效性和效率&#xff1a;人们可以通过ChatGPT获得快速和精确的信息&a…

LV.12 D23 IIC控制器与MPU6050 学习笔记

一、Exynos_4412下的IIC控制器 ​ 4412有四个IIC&#xff0c;如果要使用需要配置四个寄存器 I2CCON&#xff1a;配置一些功能 I2CSTAT&#xff1a;控制一些功能、显示一些状态 I2CDS&#xff1a;发送和接收数据 I2CADD&#xff1a;当4412作为从机时需要一个地址&#xff…

minio的k8s的单机部署

minio的k8s的单机部署 apiVersion: apps/v1 kind: Deployment metadata:name: minionamespace: itshare spec:replicas: 1selector:matchLabels:app: miniotemplate:metadata:labels:app: miniospec:containers:- name: minioimage: minio/minio:RELEASE.2022-10-15T19-57-03Z…