MailService injetável no NestJS

Encapsule o Publiq num provider injetável e envie e-mails de qualquer service ou controller do NestJS.

Crie o MailService, registre-o nos providers do módulo e injete onde precisar:

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 },
    });
  }
}

Boas práticas

  • Chame o Publiq sempre do servidor — nunca exponha a API key no cliente.
  • Crie a instância do cliente uma vez e reutilize-a entre requisições.
  • Prefira templateKey a HTML inline para manter o conteúdo versionado.
  • Trate PubliqError (status/code); o SDK já retenta erros temporários com backoff.
  • Envie de um domínio verificado — veja Domínios.

Veja também

MailService injetável no NestJS — Publiq Docs