diff --git a/backend/package-lock.json b/backend/package-lock.json index 98f407d..8f109b1 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -21,6 +21,7 @@ "express-validator": "^7.3.0", "jsonwebtoken": "^9.0.2", "multer": "^2.0.2", + "nodemailer": "^6.9.14", "ssh2-sftp-client": "^12.0.1", "svg-captcha": "^1.4.0" }, @@ -1913,6 +1914,15 @@ "node": ">=10" } }, + "node_modules/nodemailer": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.1.tgz", + "integrity": "sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/nodemon": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", diff --git a/backend/server.js b/backend/server.js index b082a28..7f6b98d 100644 --- a/backend/server.js +++ b/backend/server.js @@ -695,8 +695,10 @@ async function sendMail(to, subject, html) { throw new Error('SMTP未配置'); } + const from = (config.from && config.from.trim()) ? config.from.trim() : config.auth.user; + await transporter.sendMail({ - from: config.from, + from, to, subject, html @@ -2879,7 +2881,7 @@ app.post('/api/admin/settings/test-smtp', authMiddleware, adminMiddleware, async res.json({ success: true, message: `测试邮件已发送至 ${target}` }); } catch (error) { console.error('测试SMTP失败:', error); - res.status(500).json({ success: false, message: '测试邮件发送失败: ' + error.message }); + res.status(500).json({ success: false, message: '测试邮件发送失败: ' + (error.response?.message || error.message) }); } });