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 templateKey sobre 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.

Ver también

MailService inyectable en NestJS — Publiq Docs