Logotipo Hedhog

Receba novidades do Hedhog no seu e-mail

Novos lançamentos, receitas e breaking changes — sem spam.

E-mail

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.

Provedores SMTP, Gmail e Amazon SES alimentando o MailService, com o sinalizador de e-mail de validação automática

Configuração Rápida

  1. Crie um Perfil de Integração (tipo Email, escolha SMTP/Gmail/SES) em Settings → Integration Profiles
  2. Preencha os campos de configuração do provedor (tabelas abaixo)
  3. Vá em Settings → Configurations → General → Mail Configuration e defina Mail Profile para ele
  4. Verifique se Email Configured (configured-mail) muda para true — 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.

  1. Vá em Settings → Integration ProfilesNew → Tipo Email, escolha um provedor e preencha seus campos de configuração (tabela abaixo)
  2. Vá em Settings → Configurations → General, encontre a seção Mail Configuration e defina Mail Profile para esse perfil
  3. 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-mail para true — se a entrega falhar, o sinalizador permanece false e o erro é registrado, então você saberá imediatamente se as credenciais estão erradas
  4. 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çãoDescrição
from_emailEndereço do remetente — também o endereço que recebe o e-mail de validação automática
from_nameNome de exibição opcional mostrado antes do endereço ("Name" <[email protected]>)
reply_to_email / reply_to_nameOpcional — 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çãoDescrição
hostHostname do servidor SMTP (ex.: smtp.mailgun.org)
portPorta — tipicamente 587 (STARTTLS) ou 465 (SSL)
securetrue para a porta 465, false para 587
usernameNome de usuário de login SMTP
passwordSenha 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.

  1. 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
  2. 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
  3. Insira os valores abaixo no Perfil de Integração
Campo de configuraçãoDescrição
client_idOAuth client ID do Google Cloud Console
client_secretOAuth client secret
refresh_tokenRefresh token de longa duração obtido via o fluxo de consentimento acima
from_emailO 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.

  1. Verifique seu domínio (ou endereço de remetente) em SES → Verified identities
  2. Crie um usuário IAM (ou role) com as permissões ses:SendEmail e ses:SendRawEmail e gere um par de access keys para ele
  3. Anote sua região do SES (ex.: us-east-1) — ela precisa corresponder à região onde a identidade foi verificada
Campo de configuraçãoDescrição
regionRegião AWS onde a identidade está verificada (ex.: us-east-1)
access_key_idIAM access key ID
secret_access_keyIAM secret access key
from_emailPrecisa 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á true em 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

SintomaCausa provável
A configuração configured-mail permanece false após salvar o perfilAs 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 configuredmail-integration-profile-id não está definido, ou aponta para um perfil excluído
Integration profile X is not an email profileO tipo do perfil selecionado não é email (você escolheu a entidade errada no seletor)
Os envios pelo Gmail param do nadaO refresh token foi revogado — regenere-o através do fluxo de consentimento
Os e-mails de teste do SES nunca chegamA conta ainda está em modo sandbox e o destinatário não é uma identidade verificada