mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-27 14:52:56 +00:00
feat: 重构前端项目结构并优化代码
refactor: 迁移前端资源文件至web目录 feat: 新增多种图标资源 style: 统一代码风格和格式化配置 docs: 更新README和文档说明 chore: 更新依赖和配置文件 fix: 修复部分类型定义和枚举 perf: 优化路由和组件加载逻辑
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import smtplib
|
||||
import time
|
||||
from email.header import Header
|
||||
from email.mime.application import MIMEApplication
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
import logging
|
||||
|
||||
|
||||
class EmailPack:
|
||||
# 初始化发件人,密码,收件人列表
|
||||
def __init__(self, fromaddr: str, password: str, toaddrs: list, server_host: str):
|
||||
"""
|
||||
:param REPORT_END_PATH:
|
||||
"""
|
||||
self.fromaddr = fromaddr
|
||||
self.password = password
|
||||
self.toaddrs = toaddrs
|
||||
self.server_host = server_host
|
||||
|
||||
self.server = smtplib.SMTP(self.server_host)
|
||||
self.message = MIMEMultipart()
|
||||
|
||||
# 设置发件人名称,主题,内容,附件
|
||||
def _set_message(self, name: str, title: str, content: str, filelist: list):
|
||||
"""
|
||||
:param name:
|
||||
:param title:
|
||||
:param content:
|
||||
:param filelist:
|
||||
:return:
|
||||
"""
|
||||
tm = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
|
||||
self.message['From'] = Header(f"{name}<{self.fromaddr}>", 'utf-8') # 发件人名称和地址
|
||||
self.message['Subject'] = Header(title + "_" + tm, 'utf-8') # 邮件主题
|
||||
self.message.attach(MIMEText(content)) # 邮件内容
|
||||
if filelist is not None: # 邮件附件
|
||||
for file in filelist:
|
||||
fileApart = MIMEApplication( open(file, 'rb').read(), file.split('.')[-1])
|
||||
fileApart.add_header('Content-Disposition', 'attachment', filename=file.split("\\")[-1])
|
||||
self.message.attach(fileApart)
|
||||
|
||||
# 发送邮件
|
||||
def _send_message(self):
|
||||
"""
|
||||
:return:
|
||||
"""
|
||||
try:
|
||||
self.server.login(self.fromaddr, self.password)
|
||||
self.server.sendmail(self.fromaddr, self.toaddrs, self.message.as_string())
|
||||
logging.info(f'【邮件发送成功!收件人:{self.toaddrs}】')
|
||||
self.server.quit()
|
||||
except smtplib.SMTPException as e:
|
||||
logging.error(f'【邮件发送异常!{e}】')
|
||||
|
||||
# 默认发送邮件
|
||||
def send_default_email(self, title: str, environment: str, tester: str, total: int, pass_num: int, fail_num: int, error_num: int, skip_num: int, rate: str, duration: str, reprot_url: str, jenkins_url: str, report_path: list):
|
||||
"""
|
||||
:rtype: object
|
||||
:return:
|
||||
"""
|
||||
|
||||
self._set_message(
|
||||
name="自动化测试",
|
||||
title=f'{title}测试执行完毕提醒!',
|
||||
content=f'''
|
||||
各位同事, 大家好:
|
||||
自动化用例执行完成,执行结果如下:
|
||||
**********************************
|
||||
执行环境: {environment}
|
||||
执行人员: {tester}
|
||||
运行总数: {total}
|
||||
通过: {pass_num}
|
||||
失败: {fail_num}
|
||||
异常: {error_num}
|
||||
跳过: {skip_num}
|
||||
成功率: {rate}
|
||||
总耗时: {duration}
|
||||
报告详情: [点击查看]({reprot_url})
|
||||
**********************************
|
||||
jenkins地址:{jenkins_url}
|
||||
详细情况可登录jenkins平台查看,非相关负责人员可忽略此消息。谢谢。
|
||||
''',
|
||||
filelist=[report_path]
|
||||
)
|
||||
self._send_message()
|
||||
|
||||
Reference in New Issue
Block a user