Pular para o conteúdo
couryo

Guia do desenvolvedorIntegrações

Supabase Auth com SMTP personalizado

Faça o e-mail de confirmação, o link mágico e a recuperação de senha do Supabase Auth chegarem, com o SMTP do Couryo. Passo a passo no painel, na CLI e pela API de gerenciamento.

Ver em Markdown

O serviço de e-mail que vem embutido no Supabase serve para testar: ele tem um limite de envio por hora bem baixo, e em projetos novos só entrega para os endereços da equipe do projeto. Em produção, é a causa clássica de "o e-mail de confirmação não chega". A solução é ligar um SMTP personalizado.

Antes de começar#

  1. No Couryo, verifique o domínio de onde os e-mails vão sair (por exemplo, exemplo.com.br).
  2. Crie uma chave de API com escopo send. Ela é a senha do SMTP.

1. Configure no painel do Supabase#

Em Authentication > Emails > SMTP Settings, ligue Enable Custom SMTP e preencha:

Campo Valor
Sender email um endereço do domínio verificado, como nao-responda@exemplo.com.br
Sender name o nome do seu app
Host smtp.couryo.com
Port number 587 (ou 465)
Username couryo
Password a chave de API (ck_live_...)

Salve. Depois, em Authentication > Rate Limits, ajuste o limite de e-mails por hora para o volume do seu app: com SMTP próprio, quem decide esse número é você.

Quer testar o fluxo sem entregar nada? Use uma chave ck_test_. O e-mail de confirmação é capturado e aparece no painel do Couryo, com o link clicável.

2. Ou pela CLI (desenvolvimento local e projetos versionados)#

supabase/config.toml
[auth.email.smtp]
enabled = true
host = "smtp.couryo.com"
port = 587
user = "couryo"
pass = "env(COURYO_API_KEY)"
admin_email = "nao-responda@exemplo.com.br"
sender_name = "Exemplo"

3. Ou pela API de gerenciamento#

Terminal
curl -X PATCH "https://api.supabase.com/v1/projects/$PROJECT_REF/config/auth" \
  -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "external_email_enabled": true,
    "smtp_admin_email": "nao-responda@exemplo.com.br",
    "smtp_sender_name": "Exemplo",
    "smtp_host": "smtp.couryo.com",
    "smtp_port": "587",
    "smtp_user": "couryo",
    "smtp_pass": "'"$COURYO_API_KEY"'"
  }'

4. Teste#

Cadastre um usuário de teste no seu app (ou em Authentication > Users > Add user > Send invitation). No painel do Couryo, em E-mails, a mensagem aparece com a linha do tempo: aceito, enviado e entregue, com a resposta do servidor de destino. Se foi recusada, a explicação diz por quê, em português.

Os modelos de e-mail do Supabase#

Os textos ficam em Authentication > Emails > Templates e usam variáveis como {{ .ConfirmationURL }}. Algumas regras que ajudam a chegar na caixa de entrada:

  • Confira o Site URL e as Redirect URLs (Authentication > URL Configuration). Link apontando para localhost ou para outro domínio é o segundo motivo mais comum de "o link não funciona".
  • Escreva como uma pessoa: "Confirme o seu e-mail para entrar no Exemplo" no assunto, o nome do app no corpo e uma linha dizendo por que a pessoa recebeu.
  • Não use encurtador de link e evite um e-mail só com imagem.
  • Prefira o código de 6 dígitos ({{ .Token }}) quando o app abre no celular: alguns provedores corporativos abrem o link antes da pessoa para checar segurança, o que pode gastar um link de uso único.

Ainda não chegou?#

O que ver Onde
O Supabase chegou a enviar? Logs > Auth no Supabase. Erro de SMTP aparece ali, com o código
O Couryo recebeu? E-mails no painel do Couryo, buscando pelo destinatário
550 5.7.1 no log do Supabase o Sender email não está num domínio verificado, ou a conta ainda está no nível 0 (sandbox)
535 5.7.8 usuário diferente de couryo ou chave inválida, revogada ou sem escopo send
Entregue, mas a pessoa não achou caixa de spam ou abas do Gmail. Veja Por que meu e-mail cai no spam
over_email_send_rate_limit o limite de Rate Limits do Supabase, não o do Couryo

Mais causas, provedor por provedor, no guia E-mail de confirmação não chega.