From 5ed13351f92cf81fcaea4675fdfade8c3a61143c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=BB=E5=8B=87=E7=A5=A5?= <237899745@qq.com> Date: Mon, 24 Nov 2025 14:37:34 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D=E9=82=AE?= =?UTF-8?q?=E4=BB=B6=E5=8F=91=E9=80=81=E5=8A=9F=E8=83=BD=E7=9A=84=E5=B0=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复发件人字段处理,避免空字符串导致发送失败 - 改进SMTP测试错误消息显示,支持详细错误信息 - 更新package-lock.json锁定nodemailer版本 这些修复提升了邮件功能的稳定性和错误提示的友好性。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- backend/package-lock.json | 10 ++++++++++ backend/server.js | 6 ++++-- 2 files changed, 14 insertions(+), 2 deletions(-) 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) }); } });