Skip to content

imansi-correos-node ​

Plantillas de correo reutilizables en español con envío SMTP integrado. 26 plantillas responsive compatibles con Gmail, Outlook y Apple Mail.

npm versionLicense: MIT


¿Qué es? ​

imansi-correos-node es la librería de plantillas de correo del ecosistema Imansi. Contiene 26 plantillas listas para usar (autenticación, seguridad, transaccionales y comerciales) con HTML responsive y envío SMTP integrado.

Todas las plantillas se personalizan desde un solo JSON: marca, colores, tipografía, pie y redes sociales.


Características ​

  • 26 plantillas listas para usar
  • Multi-idioma: español, inglés y portugués
  • 100% configurable desde un solo JSON
  • HTML responsive compatible con todos los clientes de correo modernos
  • Envío SMTP integrado con nodemailer
  • JavaScript puro. Sin TypeScript, sin frameworks
  • Nombres en español en toda la API pública

Instalación ​

bash
npm install imansi-correos-node nodemailer

Uso rápido ​

1. Configurar la marca ​

Creá un archivo correos.json en la raíz de tu proyecto:

json
{
  "marca": {
    "nombre": "Mi App",
    "colores": {
      "primario": "#0066cc",
      "fondo": "#f4f4f4"
    }
  },
  "remitente": {
    "nombre": "Mi App",
    "direccion": "no-reply@miapp.com"
  },
  "idioma": "es"
}

2. Configurar SMTP ​

Creá un .env con tus credenciales:

env
SMTP_HOST=smtp.gmail.com
SMTP_PUERTO=587
SMTP_SEGURO=false
SMTP_USUARIO=tu-correo@gmail.com
SMTP_CONTRASENA=tu-contraseña-de-aplicacion
SMTP_REMITENTE=Mi App <no-reply@miapp.com>

3. Usar en tu backend ​

javascript
import {
  configurarCorreos,
  configurarSmtp,
  verificarSmtp,
  correoVerificacion2FA,
  enviarCorreo,
} from 'imansi-correos-node';

import correosJson from './correos.json' with { type: 'json' };

// Al arrancar el servidor:
configurarCorreos(correosJson);
configurarSmtp();
const { ok, mensaje } = await verificarSmtp();
if (!ok) console.warn('⚠️  SMTP:', mensaje);

// Al enviar un correo:
const correo = correoVerificacion2FA({
  destinatario: { correo: 'ivan@email.com', nombre: 'Ivan' },
  datos: { codigo: '353251', minutosExpiracion: 5 },
});

await enviarCorreo(correo);

Plantillas disponibles ​

Autenticación básica ​

FunciónUso
correoVerificacion2FACódigo de verificación en dos pasos
correoBienvenidaBienvenida tras registrarse
correoNuevaSesionAviso de nuevo inicio de sesión
correoSesionRevocadaSesión cerrada remotamente

Contraseñas ​

FunciónUso
correoRecuperacionContrasenaEnlace para restablecer contraseña
correoContrasenaCambiadaAviso tras cambio de contraseña

Verificación de correo ​

FunciónUso
correoVerificacionCorreoConfirmar dirección de correo
correoCorreoVerificadoConfirmación de correo verificado
correoCambioCorreoCambio de correo

Seguridad ​

FunciónUso
correoCuentaBloqueadaCuenta bloqueada temporalmente
correoInicioFallidoIntento de inicio de sesión fallido

Dos factores ​

FunciónUso
correoActivacion2FAActivación de 2FA
correoDesactivacion2FADesactivación de 2FA
correoCodigosRespaldo2FACódigos de respaldo

Transaccionales ​

FunciónUso
correoNotificacionGenericaNotificación flexible
correoContactoRecibidoConfirmación al usuario que escribió
correoContactoInternoAviso al equipo interno
correoEncuestaSatisfaccionEncuesta / NPS
correoRecordatorioRecordatorio genérico

Comerciales ​

FunciónUso
correoConfirmacionSuscripcionSuscripción activada
correoReciboPagoRecibo de pago
correoFacturaFactura con líneas e impuestos
correoPagoFallidoPago fallido
correoCancelacionSuscripcionCancelación de suscripción
correoBienvenidaPlanBienvenida a un plan
correoPeriodoPruebaAviso de fin de trial

Personalización completa ​

Todo se configura desde correos.json:

json
{
  "marca": {
    "nombre": "Mi App",
    "descripcion": "La mejor app del mundo",
    "logo": {
      "url": "https://miapp.com/logo.png",
      "alto": 48,
      "ancho": "auto"
    },
    "colores": {
      "primario": "#0066cc",
      "primarioSecundario": "#4C8DFF",
      "texto": "#12141A",
      "fondo": "#EEF1F6",
      "tarjeta": "#FFFFFF",
      "exito": "#006644",
      "error": "#b00020"
    },
    "radio": 16
  },
  "remitente": {
    "nombre": "Mi App",
    "direccion": "no-reply@miapp.com",
    "responderA": "soporte@miapp.com"
  },
  "pie": {
    "sitioWeb": "https://miapp.com",
    "soporteEmail": "soporte@miapp.com",
    "redes": {
      "twitter": "",
      "instagram": "",
      "linkedin": ""
    }
  },
  "idioma": "es"
}

Colores configurables ​

ColorUso
primarioBotones, enlaces, acentos
primarioSecundarioGradiente de botones
textoTexto principal
textoSecundarioSubtítulos, notas
bordeLíneas divisorias
fondoFondo del body
tarjetaFondo de la tarjeta
exitoIconos de confirmación
errorIconos de alerta

API pública ​

Configuración ​

  • configurarCorreos(json) — Aplica la configuración de marca
  • configurarSmtp(config?) — Configura el transporte SMTP
  • obtenerConfiguracion() — Devuelve la config actual
  • obtenerConfiguracionSmtp() — Devuelve la config SMTP

Envío ​

  • verificarSmtp() — Comprueba la conexión SMTP
  • enviarCorreo(correo) — Envía un correo generado
  • enviarVariosCorreos(correos) — Envía un array en serie

Utilidades ​

  • reemplazar(texto, variables) — Reemplaza {clave} por valores
  • colorSeguro(hex, fallback) — Valida un color hexadecimal
  • contrasteTexto(hex) — Devuelve #fff o #000 según contraste

Proveedores SMTP comunes ​

ProveedorHostPuertoSeguro
Gmailsmtp.gmail.com587false
Outlooksmtp-mail.outlook.com587false
Mailtrap (test)sandbox.smtp.mailtrap.io587false
Resendsmtp.resend.com587false
SendGridsmtp.sendgrid.net587false
Brevosmtp-relay.brevo.com587false

Para producción ​

env
SMTP_SEGURO=true
SMTP_PUERTO=465

Nunca subas el .env a Git. Agregalo a .gitignore.


Próximos pasos ​

Hecho con ❤️ en Argentina