API Reference: Emails

Sistema de envio de emails transacionais e manuais via Resend API. Remetente: [email protected]. Variavel de ambiente: RESEND_API_KEY.


MailService

Servico NestJS responsavel por todo envio de email da plataforma via Resend.

MetodoDescricao
sendTemplate(tipo, destinatario, dados)Envia um email usando template HTML pre-definido pelo tipo
sendToSegment(tipo, filtros, dados)Envia email para um segmento de usuarios filtrado por cargo e/ou plano
sendManual(destinatarios, assunto, html)Envia email com conteudo HTML livre (usado pela tela de admin e pela IA)
listLogs(filtros)Retorna registros da tabela email_logs com paginacao
getTemplates()Retorna lista de templates disponiveis com preview

Branded Templates

Todos os templates sao HTML inline-styled e utilizam as cores e branding do nucleo:

  • cor_primaria — cor principal do nucleo (usada em headers, botoes e destaques)
  • logo_url — URL do logo do nucleo no Supabase Storage
  • nome_nucleo — nome do nucleo para o rodape
  • nome_usuario — nome do destinatario para personalizacao

Cada nucleo tem seus emails personalizados com suas cores e logo, garantindo identidade visual consistente.


Tipos de Email

TipoDescricaoTrigger
aprovacaoMembro aprovado no nucleoAutomatico ao aprovar cadastro
rejeicaoMembro rejeitadoAutomatico ao rejeitar cadastro
comunicadoNovo comunicado publicadoCheckbox "Enviar email" ao criar comunicado
enqueteNova enquete criadaCheckbox "Enviar email" ao criar enquete
pagamentoConfirmacao de pagamento recebidoWebhook Asaas PAYMENT_RECEIVED
pagamento_atrasadoAviso de pagamento em atrasoWebhook Asaas PAYMENT_OVERDUE
conquistaNova conquista desbloqueadaAutomatico ao desbloquear conquista
manualEmail livre escrito pelo adminTela de admin /dashboard/admin/emails

Endpoints

POST /api/admin/emails/enviar

Envia email manual para lista de destinatarios ou segmento.

Permissao: COORDENADOR / ADMINISTRADOR

CampoTipoObrigatorioDescricao
assuntostringSimAssunto do email
htmlstringSimConteudo HTML do email
destinatariosstring[]CondicionalLista de emails (se nao usar segmento)
segmentoobjectCondicionalFiltros { cargo?, plano? } para envio por segmento

GET /api/admin/emails/templates

Retorna lista de templates disponiveis com nome, tipo e preview HTML.

Permissao: COORDENADOR / ADMINISTRADOR

GET /api/admin/emails/logs

Retorna logs de emails enviados com paginacao.

Permissao: COORDENADOR / ADMINISTRADOR

Query params

ParamTipoDescricao
pagenumberPagina (default 1)
limitnumberItens por pagina (default 20)
tipostringFiltrar por tipo de email
statusstringFiltrar por status (sent, failed)

Admin: /dashboard/admin/emails

Pagina administrativa com 3 abas:

  • Enviar — formulario para envio manual com editor HTML, selecao de destinatarios ou segmento (cargo/plano), e assistente IA
  • Templates — lista de templates disponiveis com preview visual de cada tipo
  • Logs — tabela paginada com historico de todos os emails enviados (tipo, destinatario, status, data)

Preview Side-by-Side (Desktop)

A tela de envio de emails possui um preview em tempo real:

  • Layout desktop: Side-by-side — formulario de edicao a esquerda, preview renderizado a direita
  • Branding do nucleo: O preview exibe o template com o logo, nome e cor_primaria do nucleo do usuario
  • Atualizacao em tempo real: Conforme o usuario digita o assunto e conteudo, o preview atualiza instantaneamente
  • Template fiel: O preview utiliza o mesmo template HTML que sera enviado no email final

Assistente IA para Emails

Na aba de envio (/dashboard/admin/emails), o botao Assistente IA permite criar emails com ajuda da inteligencia artificial:

  1. Clique no botao Assistente IA
  2. Descreva o que deseja comunicar em linguagem natural (ex: "Email convidando para o evento de sabado no centro de Vitoria")
  3. A IA gera automaticamente o assunto e o conteudo HTML do email
  4. O preview em tempo real e exibido ao lado com as cores e branding do nucleo
  5. Edite o assunto ou conteudo gerado conforme necessario
  6. Confirme e envie o email normalmente (selecionando destinatarios ou segmento)

O admin pode regenerar o conteudo quantas vezes quiser antes de enviar. Tambem e possivel criar emails via chat no AI Chat Widget usando as ferramentas prepararEmail e enviarEmail.


Emails Nacional

Emails do nivel Nacional sao enviados para membros de todos os nucleos:

  • Enviados pelo super admin via painel nacional
  • Utilizam branding generico (logo e cores da organizacao nacional)
  • Registrados nos logs com origem "nacional"

Tabela: email_logs

ColunaTipoDescricao
iduuidPK
destinatariotextEmail do destinatario
assuntotextAssunto do email enviado
tipotextTipo do template usado
statustextsent ou failed
remetente_iduuidFK para usuarios (quem disparou, se manual)
manualbooleanSe foi envio manual (true) ou automatico (false)
origemtextContexto de origem (ex: comunicado, enquete, webhook, nacional)
nucleo_iduuidFK para nucleos (multi-tenant)
criado_emtimestamptzData de envio

Segmentacao (sendToSegment)

O metodo sendToSegment aceita filtros para enviar emails apenas para um subconjunto de membros:

  • cargo — filtra por cargo do membro (ex: COORDENADOR, MEMBRO)
  • plano — filtra por plano ativo (ex: APOIADOR, MILITANTE)

Os filtros podem ser combinados. Se nenhum filtro for informado, envia para todos os membros ativos do nucleo.


Preferencias do Usuario

Usuarios podem desativar tipos de email nas configuracoes do perfil. A coluna preferencias_notificacao (JSONB) na tabela usuarios armazena as preferencias:

{
  "email_comunicado": true,
  "email_enquete": true,
  "email_pagamento": true,
  "email_conquista": false
}

O MailService consulta as preferencias antes de enviar emails automaticos. Emails manuais enviados por admins ignoram preferencias.