meily
Version:
Meily es un paquete minimalista para el envío de correos electrónicos en Node.js utilizando nodemailer, con soporte para plantillas HTML basadas en Handlebars y una sintaxis fluida y sencilla.
101 lines (80 loc) • 3.37 kB
Markdown
# Meily 📧
**Meily** es un paquete minimalista para el envío de correos electrónicos en Node.js utilizando `nodemailer`, con soporte para plantillas HTML basadas en Handlebars y una sintaxis fluida y sencilla.
---
## 🚀 Instalación
```bash
npm install meily
```
## ⚙️ Configuración
Meily depende de los siguientes valores de entorno, que debes definir en tu archivo .env:
| Variable | Descripción |
| --------------- | -------------------------------------- |
| `MAIL_HOST` | Servidor SMTP (ej. smtp.gmail.com) |
| `MAIL_PORT` | Puerto SMTP (generalmente 465 o 587) |
| `MAIL_FROM` | Correo emisor por defecto |
| `MAIL_PASSWORD` | Contraseña o token de la cuenta emisor |
## ✉️ Ejemplo Básico de Uso
```js
import { Mail } from 'meily';
import { env } from 'arrowy-env';
Mail.from(env('MAIL_FROM'))
.to('destinatario@ejemplo.com')
.subject('Asunto del correo')
.content('<h1>Hola, este es un correo de prueba</h1>')
.send();
```
## 🛠️ Envío de Plantillas HTML con Datos
Puedes enviar correos utilizando archivos `.html`:
```js
import { Mail } from 'meily';
await Mail.from(env('MAIL_FROM'))
.to('destinatario@ejemplo.com')
.html(basePath('./reporte.html'))
.data({
empleados: empleados,
fecha: '2022-01-01'
})
.subject('Envío de reporte anual')
.send();
Mail.from(env('MAIL_FROM'))
.to('destinatario@ejemplo.com')
.cc('copia@ejemplo.com')
.bcc('oculto@ejemplo.com')
.subject('Correo con adjunto')
.content('<p>Se adjunta el documento solicitado.</p>')
.attachments([
{ filename: 'documento.pdf', path: './ruta/documento.pdf' }
])
.send();
```
## ✅ Métodos Disponibles
| Método | Descripción |
| ----------------------- | ----------------------------------------------------------- |
| `from(emisor)` | Define el remitente (aunque se usa `MAIL_FROM` por defecto) |
| `to(destinatario)` | Destinatario del correo |
| `cc(copia)` | Copia visible |
| `bcc(copia)` | Copia oculta |
| `subject(asunto)` | Asunto del correo |
| `content(html)` | Contenido HTML directo |
| `html(rutaHtml)` | Ruta a plantilla `.html` para usar con Handlebars |
| `data(objeto)` | Datos a inyectar en la plantilla |
| `attachments(archivos)` | Adjuntos como array de objetos `{ filename, path }` |
| `send()` | Envía el correo |
## 🐞 Manejo de Errores y Respuesta
Por defecto, los errores se lanzan automáticamente y los envíos exitosos se imprimen en consola. Si deseas personalizar este comportamiento:
```js
Mail.from(env('MAIL_FROM'))
.to('destinatario@ejemplo.com')
.subject('Correo')
.content('<p>Prueba</p>')
.onSuccess(info => console.log('Enviado:', info.response))
.onError(error => console.error('Error al enviar:', error))
.send();
```
## 📦 Dependencias
nodemailer
arrowy-env
handlebars
fs
## 📝 Licencia
MIT © 2025 Cristian Guzmán