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

🎈 博主:一只程序猿子

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

🎈 个人介绍:爱好(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 = 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)定时任务程序运行

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

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只程序猿子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值