fix: HIGH+MEDIUM bugs from full audit - listen error, JWT, upload, mailer, webhook
This commit is contained in:
@@ -42,17 +42,28 @@ function renderTemplate(template, vars) {
|
||||
return { subject, body };
|
||||
}
|
||||
|
||||
let _transporter = null;
|
||||
let _transporterKey = '';
|
||||
|
||||
function getTransporter(cfg) {
|
||||
const key = `${cfg.host}:${cfg.port}:${cfg.user}`;
|
||||
if (_transporter && _transporterKey === key) return _transporter;
|
||||
_transporterKey = key;
|
||||
_transporter = nodemailer.createTransport({ host: cfg.host, port: cfg.port, secure: cfg.secure, auth: { user: cfg.user, pass: cfg.pass } });
|
||||
return _transporter;
|
||||
}
|
||||
|
||||
async function sendEmail(to, templateCode, vars) {
|
||||
try {
|
||||
const cfg = await getSmtpConfig();
|
||||
if (!cfg.host || !cfg.user) { console.log('[Mailer] SMTP未配置'); return false; }
|
||||
const template = await getTemplate(templateCode);
|
||||
if (!template) { console.log('[Mailer] 模板不存在:', templateCode); return false; }
|
||||
const allVars = { ...vars, site_name: await getSiteName(), site_url: await getSiteUrl() };
|
||||
const siteName = await getSiteName();
|
||||
const allVars = { ...vars, site_name: siteName, site_url: await getSiteUrl() };
|
||||
const { subject, body } = renderTemplate(template, allVars);
|
||||
|
||||
const transporter = nodemailer.createTransport({ host: cfg.host, port: cfg.port, secure: cfg.secure, auth: { user: cfg.user, pass: cfg.pass } });
|
||||
await transporter.sendMail({ from: `"${await getSiteName()}" <${cfg.from}>`, to, subject, html: body });
|
||||
const transporter = getTransporter(cfg);
|
||||
await transporter.sendMail({ from: `"${siteName}" <${cfg.from}>`, to, subject, html: body });
|
||||
return true;
|
||||
} catch (err) { console.error('[Mailer]', err.message); return false; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user