From dbd6ec520140e0569a6f658db6af409f73871eee Mon Sep 17 00:00:00 2001 From: Milton Gonzalez Date: Sun, 6 Sep 2026 14:21:23 -0500 Subject: [PATCH] fix: recorta espacios en host/usuario/remitente/destino de SMTP Un espacio de mas en el host (tecleado por error, p.ej. "mail.linkedcorp. net") rompia la resolucion DNS sin ningun indicio visual del problema. Ahora se recorta con trim() antes de guardar o de probar, tanto en updateSmtpConfig como en testSmtpConfig. Co-Authored-By: Claude Sonnet 5 --- backend/src/modules/settings/service.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/backend/src/modules/settings/service.js b/backend/src/modules/settings/service.js index f909f8a..8768c7d 100644 --- a/backend/src/modules/settings/service.js +++ b/backend/src/modules/settings/service.js @@ -31,12 +31,15 @@ export async function getSmtpConfigInternal() { } export async function updateSmtpConfig(payload, actorId) { - if (!payload.host || !payload.user) throw new HttpError(400, 'Host y usuario son obligatorios'); + const host = (payload.host || '').trim(); + const user = (payload.user || '').trim(); + const from = (payload.from || '').trim(); + if (!host || !user) throw new HttpError(400, 'Host y usuario son obligatorios'); const entries = { - smtp_host: payload.host, + smtp_host: host, smtp_port: String(payload.port || 587), - smtp_user: payload.user, - smtp_from: payload.from || payload.user, + smtp_user: user, + smtp_from: from || user, }; if (payload.pass) entries.smtp_pass_enc = encrypt(payload.pass); await repo.setMany(entries); @@ -50,9 +53,12 @@ export async function updateSmtpConfig(payload, actorId) { // (credenciales invalidas, host inalcanzable, certificado vencido, etc.) — es una accion de // diagnostico explicita del superadmin, no un envio "de negocio". export async function testSmtpConfig(payload, actorId) { - const { to } = payload; + const to = (payload.to || '').trim(); + const host = (payload.host || '').trim(); + const user = (payload.user || '').trim(); + const from = (payload.from || '').trim(); if (!to) throw new HttpError(400, 'Indica un correo destino para la prueba'); - if (!payload.host || !payload.user) throw new HttpError(400, 'Host y usuario son obligatorios para probar'); + if (!host || !user) throw new HttpError(400, 'Host y usuario son obligatorios para probar'); let pass = payload.pass; if (!pass) { @@ -62,16 +68,16 @@ export async function testSmtpConfig(payload, actorId) { } const transporter = nodemailer.createTransport({ - host: payload.host, + host, port: Number(payload.port || 587), secure: false, requireTLS: true, - auth: { user: payload.user, pass }, + auth: { user, pass }, }); try { await transporter.sendMail({ - from: payload.from || payload.user, + from: from || user, to, subject: 'Correo de prueba — project.linkedcorp.net', html: '

Si estas leyendo esto, la configuracion SMTP de project.linkedcorp.net funciona correctamente.

',