Python 自动化之收发邮件(二)

news2024/11/17 19:44:54

发邮件之Windows进程监控


文章目录

  • 发邮件之Windows进程监控
  • 前言
  • 一、基本内容
  • 二、基本结构
  • 三、库模块
  • 四、函数模块
    • 1.进程监控
    • 2.邮件发送
  • 五、程序运行模块
    • 1.获取时间
    • 2.用户输入
    • 3.进程监控
      • 3.1进程启动发邮件
      • 3.2进程停止发邮件
  • 总结


前言

上一篇简单写了一下如何进行邮件的收发操作。那么这篇在此基础上呢添加了一些触发条件,让程序替我们监控一些东西,有问题了就发邮件给我们。


一、基本内容

监控Windows系统中的某个进程,共两种模式:一是程序进程启动触发发邮件操作;二是程序进程停止触发发邮件操作。同时,邮件中会写明什么时间《日期格式 2023-02-11 06:45:21》什么程序启动还是停止。

这个是我测试的效果图。
在这里插入图片描述
在这里插入图片描述


二、基本结构

本程序主要分为三大部分:

  1. 库模块

  2. 函数模块:

             进程监控
             邮件发送
    
  3. 程序运行模块

             获取日期
             用户输入
             程序判断
    

三、库模块

代码如下:

# 用来做程序进程的监控
import psutil

# 用来记录当前时间
import time

# 用来发送邮件
import smtplib

# 用来编写邮件正文内容
from email.mime.text import MIMEText

每个库的作用已经注释出来了,记得看注释。


四、函数模块

1.进程监控

代码如下:

def is_process_running():
    for proc in psutil.process_iter():
        if proc.name() == target_process:
            return True
    return False

此处是监测用户输入的进程是否在运行。是,则返回True;否,则返回False。
后面会用这两个布尔值做判断。


2.邮件发送

代码如下:

def send_mail():

    # 创建邮件对象
    msg['Subject'] = 'Test Message'  #  这个是邮件的标题
    msg['From'] = ' xxxxxxxxx@163.com'
    msg['To'] = 'xxxxxxxxxxx@qq.com'

    # 设置服务器的地址和端口
    smtpobj = smtplib.SMTP_SSL('smtp.163.com', 465)
    
    # 向邮件服务器打招呼,这很重要
    smtpobj.ehlo()
    
    # 登录到smtp服务器
    smtpobj.login('xxxxxxxxx@163.com', 'LSxxxxxxxxx')

    # 发送邮件
    smtpobj.sendmail(msg['From'], [msg['To']], msg.as_string())

    # 从smtp服务器断开
    smtpobj.quit()

记得看代码注释哦。要是还是有点不懂点击这个链接《Python 自动化之收发邮件(一)》https://blog.csdn.net/weixin_57061292/article/details/134983850

注意:msg[‘Subject’] = ‘Test Message’ 这个是设置邮件的标题的代码。


五、程序运行模块

1.获取时间

代码如下:


if __name__ == '__main__':
    # 获得当前时间时间戳后转化为本地时间
    timeStruct = time.localtime(int(time.time()))
    # 日期格式 2023-02-11 06:45:21
    strTime = time.strftime("%Y-%m-%d %H:%M:%S", timeStruct)

第一步是获取时间。第二步是把时间转换成用户想要的格式。
if name == ‘main’: 这个的作用是当这个python文件中的函数被别的文件导入使用时候,程序运行模块不会运行。

后续代码都会在这个下面写。


2.用户输入

代码如下:

    # 要监控的进程的名称
    print('please input the process(例子:notepad.exe) ', end='')
    target_process = input()
    # 选择监控模式
    print('please choose 1 程序运行发邮件 2 程序停止发邮件: ', end='')
    choice = int(input())

用户需要输入监控的进程的名称,比如:notepad.exe。然后选择如何进行监控。


3.进程监控

3.1进程启动发邮件

代码如下:

    if choice == 1:
    
        # 设置邮件正文内容
        msg = MIMEText(f'At {strTime}, the process of {target_process} has been started.')
        
        while True:
        
            is_running = is_process_running()
            # 如果函数的进程监控模块返回True
            if is_running:
                send_mail()
            else:
                print('Process is not running')

            # 每隔一段时间检查一次,例如每5秒
            time.sleep(10)

首先,设置要发送的邮件正文的内容。然后,搞一个while循环一直检测。
需要注意的是,要设置时间间隔监测,要不然会很吃资源。


3.2进程停止发邮件

代码如下:

    elif choice == 2:
    
        # 设置邮件正文内容
        msg = MIMEText(f'At {strTime}, the process of {target_process} has been stop.')
        
        while True:
        
            is_running = is_process_running()
            # 如果函数的进程监控模块返回False
            if not is_running:
                send_mail()
            else:
                print('Process is running')

            # 每隔一段时间检查一次,例如每5秒
            time.sleep(10)

《3.1进程启动发邮件》 几乎一样,只是判断进程监控函数模块的返回值不同。


总结

看完之后,是不是觉得很简单呀,不过如此哈哈哈哈哈哈
这个东西其实也是自动化运维中很重要的一样东西,其中的原理跟我写的这个估计也大差不差的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1314697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

11.1.0iPortal之新增【增强其他服务注册能力】

作者:yx 文章目录 前言 一、使用场景二、功能说明三、举例说明 前言 11.1.0版本以前,注册服务的地址必须是可以访问的,否则会注册失败,如下图所示: 11.1.0版本开始新增“服务在线检测”功能,即可以实现注…

【Android】在Android上使用mlKit构建人脸检测程序

在Android上构建人脸检测程序 目录 1、导入mlKit依赖包2、配置人脸检测器并且获取人脸检测器3、加载图片资源4、调用人脸检测器5、绘制矩形边框6、完整代码7、效果展示 1、导入mlKit依赖包 dependencies {// ...// Use this dependency to bundle the model with your appi…

使用 TensorFlow 创建生产级机器学习模型(基于数据流编程的符号数学系统)——学习笔记

资源出处:初学者的 TensorFlow 2.0 教程 | TensorFlow Core (google.cn) 前言 对于新框架的学习,阅读官方文档是一种非常有效的方法。官方文档通常提供了关于框架的详细信息、使用方法和示例代码,可以帮助你快速了解和掌握框架的使用。 如…

关于嵌入式开发的一些信息汇总:C标准、芯片架构、编译器、MISRA-C

关于嵌入式开发的一些信息汇总:C标准、芯片架构、编译器、MISRA-C 关于C标准芯片架构是什么?架构对芯片有什么作用?arm架构X86架构mips架构小结 编译器LLVM是什么?前端在干什么?后端在干什么? MISRA C的诞生…

使用国内镜像源安装opencv

在控制台输入命令: pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 验证安装: step 1: 打开终端;step 2: 输入python,进入Python编译环境;step 3: 粘贴…

基于若依搭建微服务nacos版本(ruoyi-Cloud前后端分离)

说明:本文介绍基于Ruoyi-Cloud前后端分离nacos版本的微服务从0到1的搭建过程,同时新增一个新的微服务模块。是基于官方文档的补充说明,需要结合Ruoyi-Cloud的官方文档 https://doc.ruoyi.vip/ruoyi-cloud/ 如果直接查看官方文档便可成功部署&…

LeetCode刷题--- 全排列

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 【 http://t.csdnimg.cn/yUl2I 】 【C】 【 http://t.csdnimg.cn/6AbpV 】 数据结构与算法 【 http://t.csdnimg.cn/hKh2l 】 前言&…

hadoop3.3.4安装及启动

1.虚拟机的安装 此处我选择的是VMware,激活码可以百度搜索,安装过程比较缓慢,需要耐心等待 --------------------------------------------------------------------------------------------------------------------------------- 2.创建新的虚拟机…

虚幻学习笔记17—C++委托(单播)

一、前言 相比“代理”这个名词我更喜欢叫“委托”,虚幻的委托分为三类,分别为单播、多播和动态多播。单播顾名思义就是一次只能绑定一个函数的委托,多播能一次性绑定多个,动态多播即可以在蓝图中进行动态的绑定且可以绑定多个。 …

YOLOv8改进 | Conv篇 | 轻量级下采样方法ContextGuided(涨点幅度)

一、本文介绍 本文给大家带来的是改进机制是一种替换Conv的模块Context Guided Block (CG block) ,其是在CGNet论文中提出的一种模块,其基本原理是模拟人类视觉系统依赖上下文信息来理解场景。CG block 用于捕获局部特征、周围上下文和全局上下文&#…

Leetcode—2413.最小偶倍数【简单】

2023每日刷题(六十) Leetcode—2413.最小偶倍数 class Solution { public:int smallestEvenMultiple(int n) {return (n % 2 1) * n;} };运行结果 之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏…

新手HTML和CSS的常见知识点

​​​​ 目录 1.HTML标题标签(到)用于定义网页中的标题,并按照重要性递减排列。例如: 2.HTML段落标签()用于定义网页中的段落。例如: 3.HTML链接标签()用于创建链接…

小区生活污水处理需要哪些设备和工艺

在小区生活中,污水处理是一个非常重要的环节,它关乎到环境的保护和居民的生活质量。因此,了解小区生活污水处理所需要的设备和工艺是至关重要的。 首先,在小区生活污水处理中,需要用到的设备包括污水收集系统、初级沉淀…

详解RTC:以华人文化打造链上生态

文化是人类在发展的历史长河中淘洗出来的智慧结晶,随着人类社会的进步和变迁,经历了从口口相传到互联网等不同历史时代的传承和创新。在数字技术飞速发展的当今,区块链技术为文化的创新与传承提供了全新的空间和方式,使其得以在新…

【CANN训练营】CANN算子开发进阶笔记

Ascend C Tilling计算 Tilling基本概念介绍 大多数情况下,Local Memory的存储,无法完全容纳算子的输入与输出的所有数据,需要每次搬运一部分输入数柜进行计算然后搬出,再敲运下一部分输入数据进行计算,直到得到完愁的…

【深度学习】TensorFlow深度模型构建:训练一元线性回归模型

文章目录 1. 生成拟合数据集2. 构建线性回归模型数据流图3. 在Session中运行已构建的数据流图4. 输出拟合的线性回归模型5. TensorBoard神经网络数据流图可视化6. 完整代码 本文讲解: 以一元线性回归模型为例, 介绍如何使用TensorFlow 搭建模型 并通过会…

智能优化算法应用:基于松鼠算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于松鼠算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于松鼠算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.松鼠算法4.实验参数设定5.算法结果6.参考文献7.MA…

使用opencv的Laplacian算子实现图像边缘检测

1 边缘检测介绍 图像边缘检测技术是图像处理和计算机视觉等领域最基本的问题,也是经典的技术难题之一。如何快速、精确地提取图像边缘信息,一直是国内外的研究热点,同时边缘的检测也是图像处理中的一个难题。早期的经典算法包括边缘算子方法…

黑马头条--day01.环境搭建

一.前言 该项目学习自黑马程序员,由我整理如下,版权归黑马程序员所有 二.环境搭建 1.数据库 第一天,先创建如下库和表: sql文件如下: CREATE DATABASE IF NOT EXISTS leadnews_user DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_…

内存泄漏排查与预防

前言 内存泄漏问题,在C程序中经常会被开发测试人员忽略,最终会在客户运行现场因为内存泄漏最后导致程序内存耗尽,最后崩溃,从而影响客户的生产环境,导致异常发生。因为内存泄漏是一个共性的问题,所有的C程序…