Pular para o conteúdo
couryo

Guia do desenvolvedorMigração

Migrar de qualquer provedor por SMTP

Guia para trocar qualquer provedor SMTP (Gmail, Microsoft 365, servidor próprio, hospedagem, outro serviço de envio) pelo Couryo sem mudar o código. Credenciais, cabeçalhos, idempotência, códigos de resposta e a troca de DNS na ordem segura.

Ver em Markdown

Se o seu sistema envia por SMTP, a migração para o Couryo é trocar quatro valores: servidor, porta, usuário e senha. Cada mensagem passa pelo mesmo caminho da API: domínio verificado, supressão, limites, linha do tempo e webhooks. Siga a ordem segura da migração e use este guia para os detalhes.

As credenciais#

Campo Valor
Servidor smtp.couryo.com
Porta 587 (STARTTLS), 465 (TLS direto) ou 2525 (STARTTLS, quando a 587 está bloqueada)
Usuário couryo
Senha a chave de API (ck_live_..., ou ck_test_... para testar sem entregar)
Criptografia obrigatória (TLS 1.2 ou mais novo)

O remetente (From) precisa estar num domínio verificado no Couryo. Comece com a chave ck_test_ em homologação: o e-mail é capturado, aparece em E-mails com o conteúdo e o link de revisão, e ninguém recebe.

O que muda em relação a outros SMTPs#

  • Um id por mensagem: a resposta ao DATA é 250 2.0.0 Ok: queued as msg_.... Guarde o id para consultar a linha do tempo em GET /v1/emails/{id}.
  • Sem e-mail duplicado em nova tentativa: o Message-ID da mensagem (ou o cabeçalho Idempotency-Key) vale como chave de idempotência por 24 horas.
  • Limites explicados: perto de um limite, a resposta é 452 4.7.0 com o motivo e os números, em vez de uma recusa sem explicação. Os códigos estão em SMTP.
  • Opções por cabeçalho: X-Couryo-Stream: marketing liga o descadastro em um clique e separa a supressão do transacional; X-Couryo-Tags: tipo=pedido vira tags para filtrar no painel e nos webhooks.
  • Até 50 destinatários por mensagem. Para mandar a mesma mensagem a muita gente, prefira uma por destinatário (ou uma campanha): a entrega e as métricas ficam por pessoa.
  • O que o SMTP não faz: templates salvos e o lote de 100 numa chamada são da API REST.

Exemplos de troca#

Laravel (.env)
MAIL_MAILER=smtp
MAIL_HOST=smtp.couryo.com
MAIL_PORT=587
MAIL_USERNAME=couryo
MAIL_PASSWORD=ck_live_...
MAIL_ENCRYPTION=tls
PHPMailer
$mail->isSMTP();
$mail->Host = 'smtp.couryo.com';
$mail->Port = 587;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPAuth = true;
$mail->Username = 'couryo';
$mail->Password = getenv('COURYO_API_KEY');
Django (settings.py)
EMAIL_HOST = "smtp.couryo.com"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = "couryo"
EMAIL_HOST_PASSWORD = os.environ["COURYO_API_KEY"]

Ferramentas com campo de "SMTP personalizado" (Supabase Auth, WordPress, n8n, ERPs) usam os mesmos quatro valores.

DNS#

  1. Não mexa no MX das suas caixas de e-mail nem no SPF do domínio principal. O Couryo passa no SPF pelo subdomínio bounces, por CNAME, sem gastar nenhuma das 10 consultas de DNS do seu SPF.
  2. Publique os registros do Couryo: couryo1._domainkey, couryo2._domainkey e bounces (CNAME) e, se você ainda não tiver, o DMARC sugerido. Eles não conflitam com os do provedor atual.
  3. Se o provedor antigo já usa o subdomínio bounces, a página do domínio mostra o registro como diferente, e o domínio só fica verificado quando ele apontar para o Couryo. Nesse caso, a troca desse registro é o momento da virada: faça na hora de menor volume, com o código já pronto para o Couryo.
  4. Espere o domínio ficar verificado, mova o envio aos poucos e, 7 dias depois do fim, apague a chave DKIM e o include: do SPF do provedor antigo, se nada mais usar.