最近由于考试系统服务器重启后需要及时更新密钥后才能正常运行,但是偶尔意外断电,不能及时发现,所以就搞了一个自动检测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
打包完成后,在生成的 dist 文件夹中可以找到 monitor_boot.exe。
5. 设置开机自启动
这是实现“监测断电重启”的关键步骤。有三种方式,推荐最简单的第一种: