Python自动化办公之定时发送邮件的实现
作者:渴望力量的哈士奇 发布时间:2021-07-14 01:50:32
标签:Python,定时,邮件
该章节为 Python自动化办公篇 的最后一章,通过定时任务发送邮件的方式学习定时模块的使用 --> schedule 。(该章内容篇幅较少)
定时模块的使用
python中有一个轻量级的定时任务调度的库:schedule。它可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务。
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-8
import smtplib
import time
import schedule # pip install schedule
from email.mime.text import MIMEText
from email.header import Header
from 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('<p style="color:red;">这是一个测试</p>', "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:可以考虑加上发送邮件和定时任务之间的时间差,进行定时任务的调试,这里我就偷懒不写了哈。
运行结果如下:
来源:https://blog.csdn.net/weixin_42250835/article/details/124935113
0
投稿
猜你喜欢
- 做设计的时候,如何配色是经常让人头痛的问题,尽管很多时候,很多人都说对于色彩的掌握更多的是靠感觉,但是不得不说,感觉也是要有依据的。所以颜色
- ACCESS数据库中Field对象的caption属性(也就是标题)是用来设置数据字段的标题,在正常的数据库设计中为了保持维护的便利性,许多
- ASP从发布至今已经7年了,使用ASP技术已经相当成熟,自从微软推出了ASP.NET之后就逐渐停止了对ASP版本的更新。但是由于有很多人仍然
- 大多数网站维护都采用“多人协作,共同管理”方式。某个人负责一个(或者多个)栏目,他只能对他负责的栏目进
- 在Twinsen Liang的博客上看到一篇名为语义化单单的限定在html么?的文章,文中主要是提及了CSS的命名规则,仔细阅读后,我认为这
- 新闻系统,相册系统可以用用哦,简单实用,有兴趣的可以自己扩充!^_^相册截图:<?xml version="1.0"
- 1、chr(i)chr()函数返回ASCII码对应的字符串。>>> print chr(65)A>>>
- 一、基本思想本文思想是基于用asp和DOM来读取和存储XML数据,并利用XML数据来存储留言信息,达到同用数据库存储数据的功能。二、XML留
- 现在很多朋友都不止一个账户,不止一个密码。忘记账户名、密码,或账户名、密码输入错误也就难免啦。每当这个时候,你是否和我一样会有小小的焦虑产生
- 1、安装pecl及创建快捷键(若安装php时已带可忽略这步安装步骤)# cd /usr/local/php/bin/ //可查看
- 操作步骤1.下载BeautifulReport文件,本例文件下载地址 最新文件下载地址2.复制文件BeautifulReport,至pyth
- 本文实例讲述了python获取当前计算机cpu数量的方法。分享给大家供大家参考。具体分析如下:这里实际上返回的是计算机的cpu核心数,比如c
- 高能预警本文包含演示部分,请读者自行copy代码编译体验。参考资料:sync.WaitGroup / signal.Notify / con
- Python3.6.4必须downgrade成3.5pip版本最低9.0.3自己的电脑必须已经安装好git关于anaconda prompt
- 这篇文章主要介绍了如何使用Python抓取网页tag操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 一、XML产生的背景 XML同HTML一样,都来自Standard Generalized Markup Language, 即标准通用标记
- 本文实例讲述了python实现从ftp服务器下载文件的方法。分享给大家供大家参考。具体实现方法如下:import ftplibftp = f
- PHP 文件上传通过 PHP,可以把文件上传到服务器。本章节实例在 test 项目下完成,目录结构为:test|-----upload&nb
- 算法流程:将图像转换为灰度图像利用Sobel滤波器求出 海森矩阵 (Hessian matrix) :将高斯滤波器分别作用于Ix&s
- 前一段时间,一个流行的东方系列mv 《bad apple》 带来一股奇怪的风潮: 各种技术狂人纷纷把这段mv在一些匪夷