Python实现定时发送监控邮件

 更新时间:2022年1月4日 11:29  点击:278 作者:阿黎逸阳

不管是在信贷领域还是支付领域,作为一个风控人员,我们都需要对部署的策略模型进行监控,信贷领域可能还需要对客户的逾期表现进行监控。这时,如果我们能用python自动连接数据库,对策略、模型、贷后表现等数据进行分析处理,输出标准表格或图片到固定文件夹中。再用python自动定时给领导和同事发送监控邮件,就可以让相关人员及时了策略模型的运行状态、项目的逾期动态,是一件很有意义的事。

本文着重讲解如何用python连接邮箱,自动发送邮件,至于python连接数据库进行数据处理模块,后续有时间了再跟大家分享。

一、自动定时任务运行详情

首先来看下,自动定时任务发送邮件的运行详情,视频链接

二、开启POP3/SMTP服务

在用python连接邮箱时,需要开启POP3/SMTP服务,本文以qq邮箱为例进行讲解,其它邮箱开启方法请自行百度。首先登录网页版qq邮箱—>点击设置—>点击帐户—>下拉找到POP3/IMAP/SMTP/ Exchange/CardDAV/CalDAV服务。

在这里插入图片描述

然后开启POP3/SMTP服务(根据指示步骤操作即可)。

在这里插入图片描述

开启POP3/SMTP服务主要是想获取代码中用到的token,是一串类似字符串的文本,大家在开启服务的过程中,记得保存。

三、发送邮件

使用python发送邮件时,主要用到smtplib和email库,这两个库是自带的,直接导入即可。 

1 导入库

import os
import email
import smtplib
import datetime
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
#加载发送邮件需要用到的库

os.chdir(r"E:\自动化邮件") #设置发送邮件时附件文件存放的地址

其中smtplib模块主要负责发送邮件,email模块主要负责构建邮件。os.chdir中的文件路径记得替换成你存放邮件附件的路径。

2 设置邮件内容

平常我们发送邮件,主要需填写收件人、邮件主题、邮件正文、附件等信息。使用python发送邮件,同样也是填写这些信息,不过是在语句中注明。

mail_sender = "2275885700@qq.com"            # 发送者邮箱名
mail_license = '****************'            # 发送者邮箱授权码,即开启POP3/SMTP服务获取的token,需替换成你的邮箱
mail_host = "smtp.qq.com"                    # SMTP服务器,这里为qq邮箱,若为163邮箱请用163替换qq
mail_receivers = ["2275885700@qq.com","wawoxzy@163.com"]  #收件人邮箱
mail = MIMEMultipart('related')              # 设置邮件主体
mail["From"] = "sender_name<2275885700@qq.com>"           # 设置发送者邮箱
mail["To"] = "receiver_1_name<2275885700@qq.com>,receiver_2_name<wawoxzy@163.com>" #设置接受者邮箱
subject_content = '【日报】风险监测'                      # 设置邮件主题
mail["Subject"] = Header(subject_content,'utf-8')         # 添加邮件主题
body_content = """
各位好,

    这是风险监测日报,请查收!
    
BestRegards,
谢XX


"""                                         # 设置邮件正文
message_text = MIMEText(body_content,"plain","utf-8")   # 设置正文内容、文本格式、编码方式
mail.attach(message_text)                   # 向MIMEMultipart对象中添加文本对象

注意:mail_license中的值需替换成你在开启POP3/SMTP服务时获取的token。以上语句中的内容,可根据需要自行调整,如有疑问可参考后面的备注信息。

3 添加附件

附件信息一般是图片和数据文档,故本文对这两种附件进行阐述,你只需把名字换成你的附件名即可。

image_picture = open('yk2.jpg','rb')                   # 打开附件图片
message_image = MIMEImage(image_picture.read())        # 设置读取获取的二进制数据
#message_image.add_header('Content-ID','<image1>')
message_image["Content-Disposition"] = 'attachment; filename="yk2.jpg"' # 设置附件图片名称
mail.attach(message_image)                             # 把图片添加到邮件中去
image_picture.close()                                  # 关闭刚才打开的图片
mail.attach(message_image)                             # 把图片添加为邮件附件
atta = MIMEText(open('BlackFriday.csv', 'rb').read(),'base64','utf-8') # 添加数据(csv、excel等)附件
atta["Content-Disposition"] = 'attachment; filename="BlackFriday.csv"' # 设置数据(csv、excel等)附件名称
mail.attach(atta)                                      # 把csv附件添加到邮件中去

4 发送邮件

邮件正文和附件都设置好后,就可以发送邮件啦,具体语句如下:

smtp = smtplib.SMTP()                     # 创建SMTP对象
smtp.connect(mail_host, 25)               # 设置发件人邮箱的域名和端口,端口地址为25
smtp.set_debuglevel(1)                    # 打印和SMTP服务器交互的所有信息
smtp.login(mail_sender,mail_license)      # 根据邮箱地址和邮箱收起码登录邮箱
smtp.sendmail(mail_sender, mail_receivers, mail.as_string()) # 发送邮件,并设置邮件内容格式为str
now_time = datetime.datetime.now().strftime('%Y-%m-%d')      # 获取当前时间
print(now_time+" 日监控邮件发送成功")                        # 打印某日成功发送邮件记录
smtp.quit()                                                  # 关闭SMTP对象

至此,邮件已发送完毕,接着我们来看下邮件发送效果吧。  

5 邮件发送效果

python发送的邮件和我们手动发送的邮件是一样的,具体可见如下图片。

在这里插入图片描述

接下来,我们看看如何设置定时任务,每天定时发送邮件吧。 

四、设置定时任务

在前面两节中介绍了如何用python自动发送邮件。本节介绍如何设置定时任务,在固定时间去抓取固定文件中的内容。

1 设置定时任务的具体步骤

首先,点击windows桌面左下角的搜索菜单,输入“控制面板”,就会在最佳匹配中出现控制面板,点击控制面板。

在这里插入图片描述

接着,在控制面板的搜索框输入”任务“两个字,就会出现管理工具和计划任务,点击计划任务。

在这里插入图片描述

接着,点击创建基本任务,填写名称和描述(可自定义),点击下一步默认为每天,如需改成每周,自行选择即可。

在这里插入图片描述

点击下一步,设置任务开始的时间,点击下一步,选择启动程序,再点击下一步。接着点击浏览,选择需要定时是python脚本,最后点击完成即可。

在这里插入图片描述

2 设置定时任务的教学视频

最后,来看下设置定时任务的教学视频,大家可以根据具体步骤参考视频进行设置。

至此,应用python每天自动发送邮件已讲解完毕,感兴趣的同学可以自己跟着本文,自行实现一遍。

原文出处:https://blog.csdn.net/qq_32532663/article/details/121440707

[!--infotagslink--]

相关文章

  • python opencv 画外接矩形框的完整代码

    这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • 最炫Python烟花代码全解析

    2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
  • python中numpy.empty()函数实例讲解

    在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
  • python-for x in range的用法(注意要点、细节)

    这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • python实现b站直播自动发送弹幕功能

    这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
  • python Matplotlib基础--如何添加文本和标注

    这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • python 计算方位角实例(根据两点的坐标计算)

    今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • python实现双色球随机选号

    这篇文章主要为大家详细介绍了python实现双色球随机选号,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-02
  • python中使用np.delete()的实例方法

    在本篇文章里小编给大家整理的是一篇关于python中使用np.delete()的实例方法,对此有兴趣的朋友们可以学习参考下。...2021-02-01
  • 使用Python的pencolor函数实现渐变色功能

    这篇文章主要介绍了使用Python的pencolor函数实现渐变色功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-09
  • python自动化办公操作PPT的实现

    这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
  • Python getsizeof()和getsize()区分详解

    这篇文章主要介绍了Python getsizeof()和getsize()区分详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-20
  • 解决python 两个时间戳相减出现结果错误的问题

    这篇文章主要介绍了解决python 两个时间戳相减出现结果错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-12
  • python实现学生通讯录管理系统

    这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
  • PyTorch一小时掌握之迁移学习篇

    这篇文章主要介绍了PyTorch一小时掌握之迁移学习篇,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-08
  • Python绘制的爱心树与表白代码(完整代码)

    这篇文章主要介绍了Python绘制的爱心树与表白代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-06