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

 更新时间:2022年05月24日 09:29:59   作者:渴望力量的哈士奇  
python中的schedule模块可以使我们方便简单的使用定时任务,即在特定的时间自动的执行一些任务的功能,本文将用这一模块实现邮件自动发送,需要的可以参考一下

该章节为 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:可以考虑加上发送邮件和定时任务之间的时间差,进行定时任务的调试,这里我就偷懒不写了哈。

运行结果如下:

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

相关文章

  • Python编程基础之函数和模块

    Python编程基础之函数和模块

    这篇文章主要为大家介绍了Python函数和模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Python中无限元素列表的实现方法

    Python中无限元素列表的实现方法

    这篇文章主要介绍了Python中无限元素列表的实现方法,很实用的功能,需要的朋友可以参考下
    2014-08-08
  • Python传统图像处理之皮肤区域检测详解

    Python传统图像处理之皮肤区域检测详解

    这篇文章主要介绍了在不同情景下对传统图像进行皮肤区域检测,文章中的代码具有一定的参考价值,感兴趣的小伙伴可以跟随小编一起来学习学习
    2021-12-12
  • python tqdm用法及实例详解

    python tqdm用法及实例详解

    在本篇文章里小编给大家整理的是一篇关于python tqdm用法及实例详解内容,有需要的朋友们可以学习下。
    2021-06-06
  • 关于Python3的import问题(pycharm可以运行命令行import错误)

    关于Python3的import问题(pycharm可以运行命令行import错误)

    这篇文章主要介绍了关于Python3的import问题(pycharm可以运行命令行import错误),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 基于Python+Matplotlib实现直方图的绘制

    基于Python+Matplotlib实现直方图的绘制

    Matplotlib是Python的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。本文将为大家介绍如何用matplotlib绘制直方图,感兴趣的朋友可以学习一下
    2022-04-04
  • Python基于BeautifulSoup和requests实现的爬虫功能示例

    Python基于BeautifulSoup和requests实现的爬虫功能示例

    这篇文章主要介绍了Python基于BeautifulSoup和requests实现的爬虫功能,结合实例形式分析了Python使用BeautifulSoup和requests库爬取网站指定信息的相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • pandas数值排序的实现实例

    pandas数值排序的实现实例

    筛选和排序是Excel中使用频率最多的功能,本文主要介绍了pandas数值排序的实现实例,文中通过示例代码介绍的非常详细,,感兴趣的可以了解一下
    2021-07-07
  • Python推导式使用详情

    Python推导式使用详情

    这篇文章主要介绍了Python推导式使用详情,推导式是 for 循环的简化使用方法,使用推导式,将一个可迭代对象中的数据遍历到某一个容器当中,下面文章详细介绍需要的小伙伴可以参考一下
    2022-05-05
  • pyqt5主窗口按键弹出子窗口的实现

    pyqt5主窗口按键弹出子窗口的实现

    本文主要介绍了pyqt5主窗口按键弹出子窗口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论