Python自动化办公之定时发送邮件的实现

目录

  • 定时模块的使用
    • schedule 模块的介绍
    • schedule 模块各种时间用法
    • schedule 的启动
该章节为 Python自动化办公篇 的最后一章,通过定时任务发送邮件的方式学习定时模块的使用 --> schedule 。(该章内容篇幅较少)

定时模块的使用 python中有一个轻量级的定时任务调度的库:schedule。它可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务。
【Python自动化办公之定时发送邮件的实现】
schedule 模块的介绍
定时任务:
在 特定的时间 自动的执行一些任务的功能, python 中的 schedule 模块可以使我们方便简单的使用定时任务。
schedule 的安装:
pip install schedule 如果安装失败,尝试一下更换国内的镜像源。

schedule 模块各种时间用法
每过多少分钟执行一次 func函数 ,args是函数的参数 :
schedule.every(count).minutes.do(func, args)
每天的 10:20 执行一次 func 函数,args是函数的参数 :
schedule.every().day.at("10:20").do(func, args)
schedule 模块支持的时间如下:
类型 说明
minutes 分钟
seconds
hour 小时
day
week
schedule 模块支持的时间远不止这些,这里至介绍了常用的几个时间方式。

schedule 的启动
类型 说明
schedule.run_pending 执行
PS:要放在 "while" 中执行,并且利用时间至少 1秒 的阻塞。
代码示例如下:
# coding:utf-8import smtplibimport timeimport schedule# pip install schedulefrom email.mime.text import MIMETextfrom email.header import Headerfrom email.mime.multipart import MIMEMultipart'''第三方的 smpt [脚本中涉及的邮箱地址都是假的,请使用自己的真实邮箱地址进行测试]'''mail_host = "smtp.sina.com"# 设置邮箱服务器mail_user = "conan868242"# 设置自己的邮箱mail_pass = "cb997b01a87232b2"# 这里就是邮箱的口令,也就是授权码;不是密码。sender = "conan868242@sina.com"# 定义发送者邮箱(其实就是自己)receivers = ["3241716373@qq.com"]# 定义接受者邮箱(可以是多个接收者)# message = MIMEText('这是一个测试
', "html", "utf-8")# 定义邮件内容;"plain"是格式,表示是普通的文件内容message = MIMEMultipart()# 定义带有附件的邮件对象message["From"] = Header(sender)# 在message内定义发送信息 --> 发送者message["Subject"] = Header("Python 测试邮件发送", "utf-8")# 在message内定义发送信息的标题# print("加密后的发送内容\n", message.as_string())# 打印输出加密后的发送内容attr = MIMEText(open('send.py', 'rb').read(), 'base64', 'utf-8')# 定义带有附件的邮件发送内容;(默认是一种属性); # 以 open 的形式将需要发送的文件读出来# 定义内容为"base64"格式attr['Content-Type'] = 'application/octet-stream'# 针对属性进行格式上的定义;"application/octet-stream"代表着流上的一种协议# 即定义 "附件" 的类型attr['Content-Disposition'] = 'attachment; filename="send.py"'# 针对传输的附件定义一个名称message.attach(attr)# 利用 "message" 的 "attach" 函数将 "附件" 添加进去message = MIMEText('这是一个带附件的邮件', "plain", "utf-8")# 定义邮件文字内容(即添加邮件的主内容)def send():print("邮件开始发送")try:# 捕获发送邮件的异常smtpObj = smtplib.SMTP()# 实例化 SMTP 协议对象smtpObj.connect(mail_host, 25)# 链接 SMTP 服务器smtpObj.login(mail_user, mail_pass)# 登录邮箱验证smtpObj.sendmail(sender, receivers, message.as_string())# 发送邮件; "message" 通过 "as_string()" 进行发送内容字符串的加密except smtplib.SMTPException as error:print("error:{}".format(error))if __name__ == '__main__':schedule.every(10).seconds.do(send)# 每隔十秒钟发送一次邮件while True:# 启动定时任务,延时1秒。schedule.run_pending()time.sleep(1)

PS:可以考虑加上发送邮件和定时任务之间的时间差,进行定时任务的调试,这里我就偷懒不写了哈。
运行结果如下:
Python自动化办公之定时发送邮件的实现
文章图片

到此这篇关于Python自动化办公之定时发送邮件的实现的文章就介绍到这了,更多相关Python定时发送邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读