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.
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#
- No Couryo, verifique o domínio de onde os e-mails vão sair (por exemplo,
exemplo.com.br). - 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)#
[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#
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
localhostou 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.