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
templateKeya 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.