Command Palette

Search for a command to run...

2.0 Introdução aos Emails

Entenda o padrão de Factory utilizado para envios de emails na aplicação.

Entendendo o módulo de Emails

O nosso Boilerplate SaaS utiliza um padrão de projeto estruturado para facilitar ao máximo o envio de e-mails, sem prender você a um provedor específico. Em vez de acoplar o código diretamente ao envio por SMTP ou outra API, utilizamos o Padrão Factory (EmailFactory).

Tudo já está montado e programado para você no backend, na pasta apps/api/src/lib/email.

Como funciona na prática

Existe uma variável de ambiente principal que define qual serviço será responsável pelo envio:

EMAIL_PROVIDER="smtp" # ou "fake" para desenvolvimento local

O arquivo email.factory.ts lê essa variável e instancia a classe correta automaticamente. Ou seja, se o seu serviço de envio atual cair, você pode simplesmente plugar outro serviço (como Resend, AWS SES, etc) trocando a classe provida e a variável, sem alterar a regra de negócios.

A Estrutura do Código

  1. email.port.ts: Contém a interface EmailProvider que todos os provedores devem respeitar.
  2. email.factory.ts: A fábrica que devolve o provedor escolhido na .env.
  3. providers/: Os adaptadores para os diferentes serviços de entrega. Atualmente suportamos Fake e SMTP.

Em qualquer ponto do sistema que precisamos disparar um e-mail longo ou notificações de sistema — como por exemplo o WelcomeEmail do modulo de Auth e módulos de Notificações —, o provedor resolvido é acionado com transparência.

Em resumo: Nós desenhamos a estrutura para escalar do Dev ao Market. Você só precisa definir suas credenciais nos próprios guias dessa mesma seção, e o sistema tomará conta do resto!