@quadcore-lib/mailer-server
v0.1.0
Published
Envío de emails con **proveedor intercambiable** (SMTP/Resend/SES) y plantillas. Módulo `@Global()`: inyectá `MailerService` donde lo necesites (confirmación de orden, respuesta a tickets, bienvenida). Trae `ConsoleMailProvider` por defecto.
Readme
@quadcore-lib/mailer-server
Envío de emails con proveedor intercambiable (SMTP/Resend/SES) y plantillas. Módulo @Global(): inyectá MailerService donde lo necesites (confirmación de orden, respuesta a tickets, bienvenida). Trae ConsoleMailProvider por defecto.
Uso
import { QuadcoreMailerModule } from '@quadcore-lib/mailer-server';
import { ResendMailProvider } from '@quadcore-lib/mailer-resend'; // provider real, ver su README
QuadcoreMailerModule.forRoot({
provider: new ResendMailProvider({ apiKey: process.env.RESEND_API_KEY! }), // o sin provider => Console (loguea)
from: '[email protected]',
templates: {
welcome: (v) => ({ subject: `Hola ${v.name}`, html: `<b>Bienvenido</b>` }),
},
});constructor(private mailer: MailerService) {}
await this.mailer.send({ to, subject, html });
await this.mailer.sendTemplate('welcome', to, { name });Implementá MailProvider (send(mail)) para tu transporte real, o usá @quadcore-lib/mailer-resend.
Plantillas base (quadcoreDefaultTemplates)
Tres plantillas listas para usar (HTML + texto plano, sin dependencias externas — todo el CSS va inline, como corresponde en mail), overrideables individualmente:
import { QuadcoreMailerModule, quadcoreDefaultTemplates } from '@quadcore-lib/mailer-server';
QuadcoreMailerModule.forRoot({
templates: {
...quadcoreDefaultTemplates,
welcome: miPlantillaCustom, // override puntual, el resto sigue siendo el default
},
});| Nombre | Vars (MailTemplate vars) | Uso |
|---|---|---|
| welcome | { name?, email } | Alta de cuenta. |
| orderConfirmation | { orderNumber, customerName?, items: [{name, quantity, unitPrice, lineTotal}], subtotal, shippingCost, discount, total, currency } — mismo shape que OrderEntity/OrderItemEntity de orders-server, se puede pasar la orden casi tal cual. | Confirmación de compra. |
| ticketStatusChanged | { subject?, status, message? } | Cambio de estado de un ticket (tickets-server). |
No vienen conectadas a ningún evento automáticamente — armá el sendTemplate(...) donde corresponda (o combinalo con autoNotify de notifications-server, que emite los mismos eventos de orders-server/payments-server si querés reusar esa infraestructura para disparar el mail).
