MailService inyectable en NestJS
Encapsula Publiq en un provider inyectable y envía correos desde cualquier service o controller de NestJS.
Crea el MailService, regístralo en los providers del módulo e inyéctalo donde necesites:
import { Injectable } from '@nestjs/common';
import { Publiq } from 'publiq';
@Injectable()
export class MailService {
private readonly publiq = new Publiq(process.env.PUBLIQ_API_KEY);
sendWelcome(to: string, firstName: string) {
return this.publiq.emails.send({
from: 'you@yourdomain.com',
to,
templateKey: 'welcome-email',
variables: { first_name: firstName },
});
}
}Buenas prácticas
- Llama a Publiq siempre desde el servidor — nunca expongas la API key en el cliente.
- Crea la instancia del cliente una vez y reutilízala entre peticiones.
- Prefiere
templateKeysobre HTML inline para mantener el contenido versionado. - Maneja
PubliqError(status/code); el SDK ya reintenta errores transitorios con backoff. - Envía desde un dominio verificado — ver Dominios.