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

🎈 博主:一只程序猿子

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

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

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

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

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

如果您很喜欢我的文章且 富有**,我说:** 公主 or 王子****请打赏!!!
额滴名片儿 求打赏🥺


目录

1.前言

2.技术介绍

(1)任务计划程序

(2)Windows批处理程序

(3)天气爬虫程序

(4)自动发邮件程序

3.源码

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

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

4.创建定时任务

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

[(2) 创建任务](#(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源码:

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 = 465

try:
    # 登录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)定时任务程序运行

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

相关推荐
七夜zippoe10 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy64811 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满11 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠11 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey90312 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技13 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀13 小时前
Linux环境变量
linux·运维·服务器
zzzsde13 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º15 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~15 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化