Receba novidades do Hedhog no seu e-mail
Novos lançamentos, receitas e breaking changes — sem spam.
O Hedhog envia e-mails transacionais através do MailService do @hed-hog/core. Escolha um provedor uma vez, e todos os e-mails do sistema — redefinições de senha, convites, confirmações de cadastro por OAuth, códigos 2FA — passam a usá-lo automaticamente.
Status: ✅ Totalmente implementado — SMTP, Gmail e Amazon SES funcionam, com um autoteste automático ao salvar.

Configuração Rápida
- Crie um Perfil de Integração (tipo Email, escolha SMTP/Gmail/SES) em Settings → Integration Profiles
- Preencha os campos de configuração do provedor (tabelas abaixo)
- Vá em Settings → Configurations → General → Mail Configuration e defina Mail Profile para ele
- Verifique se Email Configured (
configured-mail) muda paratrue— o Hedhog envia um e-mail para si mesmo automaticamente para confirmar
Como Funciona
Assim como OAuth e armazenamento, as credenciais de e-mail ficam em um Perfil de Integração genérico (tipo email, provedor smtp, gmail ou ses), não em configurações simples. Uma única configuração, mail-integration-profile-id, aponta para o perfil ativo.
- Vá em Settings → Integration Profiles → New → Tipo Email, escolha um provedor e preencha seus campos de configuração (tabela abaixo)
- Vá em Settings → Configurations → General, encontre a seção Mail Configuration e defina Mail Profile para esse perfil
- No momento em que você salva, o Hedhog envia automaticamente um e-mail de validação para o endereço "from" configurado e muda um sinalizador interno
configured-mailparatrue— se a entrega falhar, o sinalizador permanecefalsee o erro é registrado, então você saberá imediatamente se as credenciais estão erradas - A partir daí, toda chamada a
MailService.sendTemplatedMail()em todo o app usa esse provedor
Trocar de provedor mais tarde é apenas selecionar um perfil diferente — sem código ou redeploy necessário, e o Hedhog reenvia o e-mail de validação automaticamente.
Campos de Configuração Comuns (todos os provedores)
Estes três campos existem no JSON config de todo perfil de e-mail, independentemente do provedor, e controlam os cabeçalhos From/Reply-To:
| Campo de configuração | Descrição |
|---|---|
from_email | Endereço do remetente — também o endereço que recebe o e-mail de validação automática |
from_name | Nome de exibição opcional mostrado antes do endereço ("Name" <[email protected]>) |
reply_to_email / reply_to_name | Opcional — defina apenas se as respostas devem ir para um endereço diferente de from_email |
SMTP
Funciona com qualquer servidor SMTP: Postfix, Mailgun, SendGrid, Mailchimp Transactional, Brevo, etc.
| Campo de configuração | Descrição |
|---|---|
host | Hostname do servidor SMTP (ex.: smtp.mailgun.org) |
port | Porta — tipicamente 587 (STARTTLS) ou 465 (SSL) |
secure | true para a porta 465, false para 587 |
username | Nome de usuário de login SMTP |
password | Senha de login SMTP |
Gmail
Usa OAuth 2.0 com um refresh token — não uma senha de app do Gmail. Isso requer criar um cliente OAuth no Google Cloud e passar por um fluxo de consentimento único para obter um refresh token, o que é mais configuração do que o SMTP, mas não depende de a verificação em duas etapas ou de senhas de app estarem habilitadas na conta.
- Em console.cloud.google.com, crie um OAuth 2.0 Client ID do tipo Web application (ou Desktop, se você for gerar o token com um script local) e habilite a Gmail API
- Solicite o escopo
https://mail.google.com/e complete o fluxo de consentimento uma vez (ex.: via OAuth Playground do Google, usando seu próprio client ID/secret na engrenagem de configurações) para obter um refresh token — esta é a parte em que os times mais travam, já que é uma etapa manual única fora do admin do Hedhog - Insira os valores abaixo no Perfil de Integração
| Campo de configuração | Descrição |
|---|---|
client_id | OAuth client ID do Google Cloud Console |
client_secret | OAuth client secret |
refresh_token | Refresh token de longa duração obtido via o fluxo de consentimento acima |
from_email | O endereço Gmail para o qual o refresh token foi emitido |
O refresh token não expira por inatividade como os access tokens, mas pode ser revogado se as configurações de segurança da conta do Google mudarem (redefinição de senha, app removido do acesso à conta, etc.) — se o envio de e-mails parar de repente, regenerar o refresh token é a primeira coisa a verificar.
Amazon SES
Adequado para e-mail de produção de alto volume. Requer uma conta AWS com acesso ao SES — note que isso usa a API do SES diretamente (access_key_id/secret_access_key), não a interface SMTP do SES, então as credenciais são chaves IAM, não credenciais SMTP.
- Verifique seu domínio (ou endereço de remetente) em SES → Verified identities
- Crie um usuário IAM (ou role) com as permissões
ses:SendEmaileses:SendRawEmaile gere um par de access keys para ele - Anote sua região do SES (ex.:
us-east-1) — ela precisa corresponder à região onde a identidade foi verificada
| Campo de configuração | Descrição |
|---|---|
region | Região AWS onde a identidade está verificada (ex.: us-east-1) |
access_key_id | IAM access key ID |
secret_access_key | IAM secret access key |
from_email | Precisa ser uma identidade verificada naquela região do SES |
Modo sandbox: contas SES novas só podem enviar para endereços/domínios que também estejam verificados. Solicite acesso de produção no console do SES antes de entrar no ar, ou todo envio de teste para a caixa de entrada de um usuário real vai falhar silenciosamente do ponto de vista dele (rejeitado ou devolvido).
Verifique se Funcionou
- Após salvar o perfil, confirme que Email Configured (
configured-mail) estátrueem Settings → Configurations → General - Dispare um fluxo real que envie e-mail — uma redefinição de senha é o mais fácil — e confirme que a mensagem realmente chega, não apenas o e-mail de validação automática que o Hedhog já enviou para si mesmo
Solução de Problemas
| Sintoma | Causa provável |
|---|---|
A configuração configured-mail permanece false após salvar o perfil | As credenciais estão erradas, ou a conta SES/Gmail não está verificada — verifique os logs da API pelo erro do e-mail de validação |
Erros No mail profile configured | mail-integration-profile-id não está definido, ou aponta para um perfil excluído |
Integration profile X is not an email profile | O tipo do perfil selecionado não é email (você escolheu a entidade errada no seletor) |
| Os envios pelo Gmail param do nada | O refresh token foi revogado — regenere-o através do fluxo de consentimento |
| Os e-mails de teste do SES nunca chegam | A conta ainda está em modo sandbox e o destinatário não é uma identidade verificada |