Sistema de Emails
Documentação do sistema de envio de emails do PAC.
Visão Geral
O sistema utiliza Nodemailer para envio de emails através de SMTP. Todos os emails são enviados automaticamente em eventos específicos do sistema.
Configuração
EmailService
O serviço está localizado em infrastructure/services/email.service.ts e utiliza:
- Host SMTP: Configurável via variável de ambiente
- Porta: 587 (TLS)
- Autenticação: Usuário e senha SMTP
- Templates: HTML gerado programaticamente
Variáveis de Ambiente
SMTP_HOST=mail.gruponimbus.com.br
SMTP_PORT=587
SMTP_USER=noreply@gruponimbus.com.br
SMTP_PASS=sua_senha
SMTP_FROM="PAC Sistema" <noreply@gruponimbus.com.br>
FRONTEND_URL=https://homologacao.pac.com.br
Tipos de Email
1. Email de Boas-Vindas ao Cliente
Trigger: Quando um cliente é cadastrado pelo admin
Conteúdo:
- Título: "Bem-vindo ao Sistema PAC!"
- Credenciais de acesso (email e senha)
- Link para login
- Aviso para alterar senha
Método: enviarEmailBoasVindasCliente(email, nome, senha)
2. Solicitação de Vínculo RT
Trigger: Quando um cliente solicita vínculo com um RT
Conteúdo:
- Título: "Nova Solicitação de Vínculo"
- Dados da empresa solicitante
- Link para acessar o sistema
- Aviso de segurança
Método: enviarSolicitacaoVinculo(emailRT, nomeRT, dadosEmpresa)
3. Vínculo Aprovado
Trigger: Quando RT aceita solicitação de vínculo
Conteúdo:
- Título: "Vínculo com Responsável Técnico Aprovado"
- Nome do RT que aprovou
- Link para acessar o sistema
Método: enviarEmailVinculacaoAceita(emailCliente, nomeCliente, nomeRT)
4. Vínculo Rejeitado
Trigger: Quando RT rejeita solicitação de vínculo
Conteúdo:
- Título: "Vínculo com Responsável Técnico Rejeitado"
- Nome do RT que rejeitou
- Motivo da rejeição (se informado)
- Sugestão para buscar outro RT
Método: enviarEmailVinculacaoRejeitada(emailCliente, nomeCliente, nomeRT, motivo?)
5. Novo Chamado
Trigger: Quando cliente abre um novo chamado
Conteúdo:
- Título: "Novo Chamado de Suporte"
- Protocolo do chamado
- Dados do cliente
- Título e descrição do chamado
- Link para responder
Método: enviarEmailNovoChamado(emailRT, nomeRT, protocolo, titulo, descricao, nomeCliente)
6. Chamado Respondido
Trigger: Quando RT responde um chamado
Conteúdo:
- Título: "Chamado Respondido"
- Protocolo do chamado
- Resposta do RT
- Link para visualizar
Método: enviarEmailChamadoRespondido(emailCliente, nomeCliente, protocolo, titulo, resposta)
Estrutura dos Templates
Todos os templates seguem um padrão visual consistente:
<!DOCTYPE html>
<html>
<head>
<!-- Meta tags -->
</head>
<body>
<!-- Header com gradiente roxo -->
<!-- Conteúdo principal -->
<!-- Footer -->
</body>
</html>
Características dos Templates
- Design Responsivo: Funciona em desktop e mobile
- Cores: Gradiente roxo/violeta (#667eea a #764ba2)
- Tipografia: Segoe UI, Tahoma, Geneva, Verdana
- Cards: Bordas arredondadas e sombras sutis
- CTAs: Botões com gradiente e links para o sistema
Fluxo de Envio
sequenceDiagram
participant Sistema as Sistema PAC
participant EmailService as EmailService
participant SMTP as Servidor SMTP
participant Destinatario as Destinatário
Sistema->>EmailService: Chamar método de envio
EmailService->>EmailService: Gerar template HTML
EmailService->>SMTP: Enviar email via Nodemailer
SMTP->>Destinatario: Entregar email
alt Sucesso
EmailService->>Sistema: Log de sucesso
else Erro
EmailService->>Sistema: Log de erro (não bloqueia fluxo)
end
Tratamento de Erros
O sistema não bloqueia o fluxo principal em caso de erro no envio de email:
- Erros são logados no console
- O processo continua normalmente
- Não há retry automático (pode ser implementado)
Exemplo de Uso
// No código do sistema
await this.emailService.enviarEmailBoasVindasCliente(
cliente.email,
cliente.nomeFantasia,
senhaGerada
);
Personalização
Para adicionar novos tipos de email:
- Criar método no
EmailService - Criar método privado para gerar template HTML
- Chamar o método no ponto apropriado do fluxo
- Adicionar variáveis de ambiente se necessário