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.
',