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.
¿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 nodemailerUso 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ón | Uso |
|---|---|
correoVerificacion2FA | Código de verificación en dos pasos |
correoBienvenida | Bienvenida tras registrarse |
correoNuevaSesion | Aviso de nuevo inicio de sesión |
correoSesionRevocada | Sesión cerrada remotamente |
Contraseñas
| Función | Uso |
|---|---|
correoRecuperacionContrasena | Enlace para restablecer contraseña |
correoContrasenaCambiada | Aviso tras cambio de contraseña |
Verificación de correo
| Función | Uso |
|---|---|
correoVerificacionCorreo | Confirmar dirección de correo |
correoCorreoVerificado | Confirmación de correo verificado |
correoCambioCorreo | Cambio de correo |
Seguridad
| Función | Uso |
|---|---|
correoCuentaBloqueada | Cuenta bloqueada temporalmente |
correoInicioFallido | Intento de inicio de sesión fallido |
Dos factores
| Función | Uso |
|---|---|
correoActivacion2FA | Activación de 2FA |
correoDesactivacion2FA | Desactivación de 2FA |
correoCodigosRespaldo2FA | Códigos de respaldo |
Transaccionales
| Función | Uso |
|---|---|
correoNotificacionGenerica | Notificación flexible |
correoContactoRecibido | Confirmación al usuario que escribió |
correoContactoInterno | Aviso al equipo interno |
correoEncuestaSatisfaccion | Encuesta / NPS |
correoRecordatorio | Recordatorio genérico |
Comerciales
| Función | Uso |
|---|---|
correoConfirmacionSuscripcion | Suscripción activada |
correoReciboPago | Recibo de pago |
correoFactura | Factura con líneas e impuestos |
correoPagoFallido | Pago fallido |
correoCancelacionSuscripcion | Cancelación de suscripción |
correoBienvenidaPlan | Bienvenida a un plan |
correoPeriodoPrueba | Aviso 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
| Color | Uso |
|---|---|
primario | Botones, enlaces, acentos |
primarioSecundario | Gradiente de botones |
texto | Texto principal |
textoSecundario | Subtítulos, notas |
borde | Líneas divisorias |
fondo | Fondo del body |
tarjeta | Fondo de la tarjeta |
exito | Iconos de confirmación |
error | Iconos de alerta |
API pública
Configuración
configurarCorreos(json)— Aplica la configuración de marcaconfigurarSmtp(config?)— Configura el transporte SMTPobtenerConfiguracion()— Devuelve la config actualobtenerConfiguracionSmtp()— Devuelve la config SMTP
Envío
verificarSmtp()— Comprueba la conexión SMTPenviarCorreo(correo)— Envía un correo generadoenviarVariosCorreos(correos)— Envía un array en serie
Utilidades
reemplazar(texto, variables)— Reemplaza{clave}por valorescolorSeguro(hex, fallback)— Valida un color hexadecimalcontrasteTexto(hex)— Devuelve#fffo#000según contraste
Proveedores SMTP comunes
| Proveedor | Host | Puerto | Seguro |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | false |
| Outlook | smtp-mail.outlook.com | 587 | false |
| Mailtrap (test) | sandbox.smtp.mailtrap.io | 587 | false |
| Resend | smtp.resend.com | 587 | false |
| SendGrid | smtp.sendgrid.net | 587 | false |
| Brevo | smtp-relay.brevo.com | 587 | false |
Para producción
env
SMTP_SEGURO=true
SMTP_PUERTO=465Nunca subas el .env a Git. Agregalo a .gitignore.
Próximos pasos
- imansi-auth-node — El backend que usa estas plantillas
- Quickstart — Empezá tu proyecto
