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

@@ -2,6 +2,46 @@
let fundsData = [];
let fundChart = null;
// 页面加载完成后初始化
// 邮件发送按钮点击事件
document.addEventListener('DOMContentLoaded', function() {
const sendBtn = document.getElementById('sendFundEmail');
if (sendBtn) {
sendBtn.addEventListener('click', async function() {
this.disabled = true;
this.innerHTML = '<i class="fas fa-spinner fa-spin"></i> 发送中...';
const messageEl = document.getElementById('message');
try {
const response = await fetch('send_fund_email.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
});
const result = await response.json();
if (result.success) {
messageEl.className = 'alert alert-success';
messageEl.textContent = '基金状态邮件发送成功!';
} else {
messageEl.className = 'alert alert-danger';
messageEl.textContent = '发送失败: ' + (result.error || '未知错误');
}
} catch (error) {
messageEl.className = 'alert alert-danger';
messageEl.textContent = '请求失败: ' + error.message;
} finally {
this.disabled = false;
this.innerHTML = '发送基金状态邮件';
// 3秒后自动清除消息
setTimeout(() => messageEl.textContent = '', 3000);
}
});
}
});
// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', function() {
loadFundsData();