feat: 添加基金邮件定时发送功能并优化邮件内容格式

- 新增宝塔面板定时任务脚本 cron_send_email.php
- 添加手动发送邮件按钮到管理界面
- 使用PHPMailer替代原始SMTP实现
- 优化邮件内容格式,按涨跌幅排序基金数据
- 增加邮件发送时间窗口判断逻辑
- 更新项目文档说明定时任务配置
This commit is contained in:
LL
2025-12-12 17:10:03 +08:00
parent 354133d6e4
commit 69ef47412d
13 changed files with 395 additions and 197 deletions

View File

@@ -1,6 +1,6 @@
{
"last_sent_date": "2025-12-12",
"last_sent_time": "04:17:24",
"sent_count": 7,
"last_sent_time": "15:52:12",
"sent_count": 26,
"failed_count": 6
}

View File

@@ -61,57 +61,57 @@
"today_data": {
"003766": {
"date": "2025-12-12",
"change": 0.6,
"change": 0.97,
"name": "广发创业板ETF发起式联接C"
},
"008327": {
"date": "2025-12-12",
"change": 1.63,
"change": 1.38,
"name": "东财通信C"
},
"012863": {
"date": "2025-12-12",
"change": -0.63,
"change": 0.18,
"name": "汇添富中证电池主题ETF发起式联接C"
},
"023350": {
"date": "2025-12-12",
"change": 0.56,
"change": -0.29,
"name": "诺安多策略混合C"
},
"017560": {
"date": "2025-12-12",
"change": 0.48,
"change": 2.1,
"name": "华安上证科创板芯片ETF发起式联接C"
},
"011815": {
"date": "2025-12-12",
"change": 0.58,
"change": 0.69,
"name": "恒越优势精选混合A"
},
"003598": {
"date": "2025-12-12",
"change": 0.47,
"change": 0.61,
"name": "华商润丰灵活配置混合A"
},
"004206": {
"date": "2025-12-12",
"change": 0.5,
"change": 0.77,
"name": "华商元亨混合A"
},
"022365": {
"date": "2025-12-12",
"change": 1.14,
"change": 1.19,
"name": "永赢科技智选混合发起C"
},
"022364": {
"date": "2025-12-12",
"change": 1.14,
"change": 1.19,
"name": "永赢科技智选混合发起A"
},
"011103": {
"date": "2025-12-12",
"change": 1.08,
"change": 1.98,
"name": "天弘中证光伏产业指数C"
}
},

View File

@@ -1,75 +1,90 @@
{
"0": {
"timestamp": "2025-12-12 04:47:50",
"timestamp": "2025-12-12 08:46:41",
"action": "管理员登录",
"ip": "::1"
},
"1": {
"timestamp": "2025-12-12 04:17:07",
"timestamp": "2025-12-12 08:05:44",
"action": "管理员登录",
"ip": "::1"
},
"2": {
"timestamp": "2025-12-12 08:00:34",
"action": "管理员登录",
"ip": "::1"
},
"3": {
"timestamp": "2025-12-12 04:47:50",
"action": "管理员登录",
"ip": "::1"
},
"4": {
"timestamp": "2025-12-12 04:17:07",
"action": "管理员登录",
"ip": "::1"
},
"5": {
"timestamp": "2025-11-11 13:41:58",
"action": "管理员登录",
"ip": "113.87.139.184"
},
"3": {
"6": {
"timestamp": "2025-11-06 08:31:27",
"action": "管理员登录",
"ip": "113.87.138.191"
},
"4": {
"7": {
"timestamp": "2025-11-05 14:45:57",
"action": "管理员登录",
"ip": "113.87.138.191"
},
"5": {
"8": {
"timestamp": "2025-11-05 14:34:30",
"action": "管理员登录",
"ip": "113.87.138.191"
},
"6": {
"9": {
"timestamp": "2025-11-05 09:47:16",
"action": "管理员登录",
"ip": "113.87.138.191"
},
"7": {
"10": {
"timestamp": "2025-11-01 23:18:46",
"action": "管理员登录",
"ip": "113.87.139.206"
},
"8": {
"11": {
"timestamp": "2025-10-31 23:11:13",
"action": "管理员登录",
"ip": "113.84.8.124"
},
"9": {
"12": {
"timestamp": "2025-10-31 10:20:41",
"action": "管理员注销",
"ip": "113.87.137.255"
},
"10": {
"13": {
"timestamp": "2025-10-31 10:18:31",
"action": "管理员登录",
"ip": "113.87.137.255"
},
"11": {
"14": {
"timestamp": "2025-10-31 09:08:47",
"action": "管理员登录",
"ip": "113.87.137.255"
},
"12": {
"15": {
"timestamp": "2025-10-30 21:05:23",
"action": "管理员登录",
"ip": "113.87.139.170"
},
"13": {
"16": {
"timestamp": "2025-10-30 17:28:24",
"action": "管理员注销",
"ip": "113.87.137.255"
},
"14": {
"17": {
"timestamp": "2025-10-30 17:14:21",
"action": "管理员登录",
"ip": "113.87.137.255"

View File

@@ -1,7 +1,7 @@
{
"total_visits": 618,
"today_visits": 5,
"unique_visitors": 64,
"total_visits": 621,
"today_visits": 8,
"unique_visitors": 65,
"last_reset": "2025-12-12",
"daily_stats": {
"2025-10-28": 55,
@@ -23,7 +23,7 @@
"2025-11-15": 1,
"2025-11-17": 5,
"2025-11-18": 1,
"2025-12-12": 5
"2025-12-12": 8
},
"unique_ips": [
"113.87.138.21",
@@ -89,7 +89,8 @@
"113.87.136.32",
"205.169.39.16",
"113.84.33.13",
"::1"
"::1",
"Unknown"
],
"today_unique_visitors": 1
"today_unique_visitors": 2
}

View File

@@ -4324,5 +4324,26 @@
"timestamp": 1765511264,
"date": "2025-12-12 04:47:44",
"referer": "http:\/\/localhost:8080\/2\/?ide_webview_request_time=1765511263860"
},
{
"ip": "Unknown",
"user_agent": "Unknown",
"timestamp": 1765521796,
"date": "2025-12-12 07:43:16",
"referer": "Direct"
},
{
"ip": "::1",
"user_agent": "Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) TraeCN\/1.104.3 Chrome\/138.0.7204.251 Electron\/37.6.1 Safari\/537.36",
"timestamp": 1765522828,
"date": "2025-12-12 08:00:28",
"referer": "http:\/\/localhost:8080\/2\/?ide_webview_request_time=1765522826051"
},
{
"ip": "::1",
"user_agent": "Mozilla\/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell\/5.1.26100.4768",
"timestamp": 1765523454,
"date": "2025-12-12 08:10:54",
"referer": "Direct"
}
]