当前位置: 首页 > news >正文

利用邮件发送附件来实现一键巡检,附件是通过调用zabbix api生成的word和Excel

HTML部分:

<!DOCTYPE html>
<html>
<head><title>自动巡检</title><!-- 加入CSS样式 -->
</head>
<body><form id="inspectionForm"><label for="email">邮箱地址:</label><input type="email" id="email" name="email" required><label for="subject">主题:</label><input type="text" id="subject" name="subject" required><label for="content">内容:</label><textarea id="content" name="content" required></textarea><button type="submit">一键巡检</button></form><div id="progressBar" style="display:none;"><!-- 进度条动画 --></div><script src="/static/script.js"></script>
</body>
</html>

JavaScript部分 (script.js):

document.getElementById("inspectionForm").onsubmit = function(event) {event.preventDefault();var email = document.getElementById("email").value;var subject = document.getElementById("subject").value;var content = document.getElementById("content").value;// 显示进度条document.getElementById("progressBar").style.display = "block";// 发送AJAX请求到后端var xhr = new XMLHttpRequest();xhr.open("POST", "/start_inspection", true);xhr.setRequestHeader("Content-Type", "application/json");xhr.onreadystatechange = function () {if (xhr.readyState == 4 && xhr.status == 200) {alert("巡检已完成,邮件已发送");document.getElementById("progressBar").style.display = "none";}};xhr.send(JSON.stringify({email: email, subject: subject, content: content}));
};

后端(Python + Flask)

后端部分:

from flask import Flask, request, jsonify, send_file
import subprocessapp = Flask(__name__)@app.route('/')
def index():return send_file('bbb.html')@app.route('/start_inspection', methods=['POST'])
def start_inspection():data = request.get_json()email = data['email']subject = data['subject']content = data['content']# 调用Python脚本subprocess.run(["python", "C:/Users/YK/Desktop/一键巡检/单独发送邮件包含固定附件已经成功.py", email, subject, content])return jsonify({"message": "Inspection completed and email sent"})if __name__ == '__main__':app.run(debug=True)

单独发送邮件包含固定附件已经成功.py
脚本部分:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
from email.header import Header
import sys
import osdef send_email(recipient, subject, body, attachment_paths):sender = "xunjianbot@163.com"password = "XXXXXXXXXXXXX"# 创建带有多个部分的邮件message = MIMEMultipart()message['From'] = Header(sender)message['To'] = Header(recipient)message['Subject'] = Header(subject)# 邮件正文message.attach(MIMEText(body, 'plain', 'utf-8'))# 添加附件for attachment_path in attachment_paths:part = MIMEBase('application', "octet-stream")try:with open(attachment_path, "rb") as file:part.set_payload(file.read())encoders.encode_base64(part)part.add_header('Content-Disposition', 'attachment', filename=os.path.basename(attachment_path))message.attach(part)except IOError:print(f"Could not attach file: {attachment_path}")returntry:server = smtplib.SMTP_SSL("smtp.163.com", 465)server.login(sender, password)server.sendmail(sender, [recipient], message.as_string())server.quit()print("邮件发送成功")except smtplib.SMTPException as e:print("邮件发送失败", e)if __name__ == "__main__":if len(sys.argv) != 4:print("Usage: python send_email.py <recipient> <subject> <body>")sys.exit(1)recipient = sys.argv[1]subject = sys.argv[2]body = sys.argv[3]# 附件文件路径列表attachment_paths = ["C:\\Users\\YK\\Desktop\\一键巡检\\aaaa.html","C:\\Users\\YK\\Desktop\\一键巡检\\获取zabbix版本.py"]send_email(recipient, subject, body, attachment_paths)
http://www.lryc.cn/news/277480.html

相关文章:

  • Linux 常用指令汇总
  • SpringBoot 注解超全详解(整合超详细版本)
  • Redis:原理速成+项目实战——Redis实战9(秒杀优化)
  • 【I2多语言】多语言快速上手
  • 【野火i.MX6ULL开发板】开发板连接网络(WiFi)与 SSH 登录、上电自动登录、设置静态IP、板子默认参数
  • 【数据库原理】(10)数据定义功能
  • GnuTLS recv error (-110): The TLS connection was non-properly terminated.
  • hive sql 和 spark sql的区别
  • SparkStreaming基础解析(四)
  • HTML---JavaScript操作DOM对象
  • ChatGPT扩展系列之网易数帆ChatBI
  • 1.10号io网络
  • 基于JAVA+SpringBoot的高校学术报告系统
  • 单机部署Rancher
  • linux 命令
  • MySQL数据库进阶|SQL优化|开发手册
  • 一文了解Git(所有命令)附带图片
  • Hex2Bin转换软件、Bootloader 、OTA加密升级 、STM32程序加密、其他MCU同样适用
  • Hadoop之mapreduce参数大全-6
  • Vue开发中,在实现单页面应用(SPA)前端路由时的hash模式和history模式的区别及详细介绍
  • 功能强大的免费SSL证书
  • 在Vue中使用Web Worker详细教程
  • 四、C#高级特性(动态类型与Expando类)
  • 贪心算法的“左最优“与“右最优“及其对应的堆处理和预处理方法
  • 【Docker】容器的相关命令
  • Android BUG 之 Error: Activity class {} does not exist
  • 听劝,年度规划有它真的很必要!
  • leetcode滑动窗口问题总结 Python
  • 秒变办公达人,只因用了这5款在线协同文档app!
  • 镜头选型和计算