meta {
  name: 3. Reenviar E-mail
  type: http
  seq: 3
}

post {
  url: {{baseUrl}}/api/contacts/{{contactId}}/emails/{{campaignLogId}}/resend
  body: none
  auth: none
}

docs {
  Requer sessão + a campanha do log pertencer ao usuário logado. Sem body. **Reenvia o MESMO `CampaignLog`** (não cria um novo) — preserva histórico de abertura/clique e mantém o token do pixel de tracking estável.

  ⚠️ **Não há checagem do `status` atual do log** — funciona igual para reenviar um log `PENDING`, `SUCCESS` ou `FAILED` (confirmado no código e nos testes: não existe nenhum `if (log.status !== "FAILED")`).

  Erros de negócio, em ordem: `AppError.notFound("Envio não encontrado")` → 404 (log inexistente, OU a campanha é de outro usuário, OU `{{campaignLogId}}` não pertence a `{{contactId}}` — mesma mensagem para os três casos); `AppError.badRequest("Não é possível reenviar para um contato inativo, descadastrado ou com bounce.")` → 400 se `contact.status !== "ACTIVE"`; `AppError.badRequest("E-mail suprimido (bounce ou reclamação anterior)")` → 400 se o e-mail estiver na suppression list; `AppError.badRequest(<mensagem do provider>)` → 400 se o envio falhar de fato (e o log é marcado `FAILED`).

  Sucesso: 200, `{success: true, messageId?: string}`.
}
