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