当前位置:首页>python>检测电脑重启后邮件通知(Python)

检测电脑重启后邮件通知(Python)

  • 2026-10-11 08:37:30
检测电脑重启后邮件通知(Python)

最近由于考试系统服务器重启后需要及时更新密钥后才能正常运行,但是偶尔意外断电,不能及时发现,所以就搞了一个自动检测Windows服务器断电重启后的邮件通知程序。

1.需要开启邮箱的SMTP服务,并获取授权码,不同的邮箱入口不一样,可自行上网搜索获取办法。

2.准备工作(安装必要的库)

pip install yagmail pyinstaller

3.Python代码实现

import yagmailimport timeimport socket# --- 配置区域 ---SMTP_SERVER = "smtp.qq.com"  # 常用:smtp.qq.com 或 smtp.163.comSENDER_EMAIL = "your_email@qq.com"AUTH_CODE = "your_auth_code_here"  # 邮箱授权码RECEIVERS = ["staff1@example.com", "staff2@example.com"]SUBJECT = "【系统通知】服务器/电脑已重启"CONTENT = "您好,监测到电脑完成了一次开机或重启,系统服务已恢复运行。"def check_network():    """检查网络是否可用"""    try:        socket.create_connection(("8.8.8.8", 53), timeout=3)        return True    except OSError:        return Falsedef send_notification():    """发送邮件"""    # 循环等待网络连接成功    print("等待网络连接...")    while not check_network():        time.sleep(5)    try:        yag = yagmail.SMTP(user=SENDER_EMAIL, password=AUTH_CODE, host=SMTP_SERVER)        yag.send(to=RECEIVERS, subject=SUBJECT, contents=CONTENT)        print("通知邮件已发送!")    except Exception as e:        print(f"发送失败: {e}")if __name__ == "__main__":    # 程序一启动就执行发送任务    send_notification()    # 保持程序在后台运行(如果只是为了开机发邮件,可以不写死循环)    # 如果你需要它持续监测其他状态,可以在这里添加逻辑    while True:        time.sleep(3600)

4.打包为exe文件

使用 PyInstaller 将脚本打包成一个独立的执行文件,并隐藏控制台窗口:

(1)打开终端/命令行,进入脚本所在文件夹。

(2)执行以下命令:

pyinstaller --noconsole --onefile monitor_boot.py
  • --noconsole:运行时不显示黑色的命令行窗口。

  • --onefile:将所有依赖打包进一个 .exe 文件。

打包完成后,在生成的 dist 文件夹中可以找到 monitor_boot.exe。

5. 设置开机自启动

这是实现“监测断电重启”的关键步骤。有三种方式,推荐最简单的第一种:

  • 方法一:放入启动文件夹(最简单)

  • 按 Win + R 键,输入 shell:startup 并回车。

  • 将打包好的 monitor_boot.exe 的快捷方式或文件本身粘贴到打开的文件夹中。

  • 方法二:任务计划程序

  • 搜索“任务计划程序”,创建一个新任务。

  • 触发器选择“当前用户登录时”或“启动时”。

  • 操作选择“启动程序”,指向你的 EXE 文件。

最新文章

随机文章