AnonMail

Envie e-mails sem revelar sua identidade.

* campos obrigatórios

carregando...
Uso mensal de envios anônimos
— / 180
Envios anônimos
Total acumulado
todos os meses
Carregando...
Este mês
Carregando...

Conectando ao Firebase...

TME
AnonMail TME Architecture

Transparent Multi-Mode Execution — uma página HTML estática age como intermediária. Ela lê parâmetros da URL, executa o envio anônimo e retorna o resultado no hash da URL para o WebViewer do Kodular. Sem backend próprio, sem servidor dedicado.

Parâmetros da URL
ParâmetroReq.Descrição
toE-mail do destinatário
subjectAssunto da mensagem
messageCorpo da mensagem

A URL base é mesinhas.vercel.app/anonmail/tme/. O campo mode não é mais necessário — o TME opera exclusivamente em modo anônimo.

Resposta via hash da URL

A página grava o resultado em window.location.hash. No Kodular, leia via WebViewerTME.CurrentUrl no evento PageLoaded.

#result=success&mode=anon
#result=error&msg=Motivo+do+erro
Guia de integração — Kodular
1
Adicione um WebViewer invisível

No Designer, arraste um WebViewer para a tela. Defina Visible → false. Nomeie-o WebViewerTME.

2
Crie uma variável global de controle

Crie uma variável global booleana tme_aguardando com valor inicial false. Ela evita reagir a carregamentos não relacionados no evento PageLoaded.

3
Monte a URL e abra no WebViewer

Use Web → UriEncode em cada valor antes de concatenar. Marque tme_aguardando = true antes de chamar GoToUrl.

⚠ Use Web.UriEncode em cada campo individualmente — nunca concatene texto puro com &, =, espaços ou acentos.
4
Leia o resultado no evento PageLoaded

Em WebViewerTME.PageLoaded, verifique tme_aguardando. Leia WebViewerTME.CurrentUrl e separe o hash com # (posição 2). Se contiver result=success mostre sucesso; caso contrário extraia o erro com segment(hash, "msg=", 2) e decodifique com Web.UriDecode. Marque tme_aguardando = false.

5
Desabilite o botão durante o envio

Desabilite o botão antes de chamar GoToUrl e reabilite dentro do PageLoaded, após tratar o resultado.

API
AnonMail API

POST para https://mesinhasserver.vercel.app/api/anonmail — envia e-mails anonimamente via JSON. Limite global de 180 envios/mês. CORS habilitado para qualquer origem.

Body (JSON)
CampoReq.Descrição
toE-mail do destinatário
subjectAssunto da mensagem
messageCorpo da mensagem

O campo mode não é mais necessário — a API opera exclusivamente em modo anônimo.

Respostas
200 { "success": true, "mode": "anon" }
400 { "success": false, "error": "Campo obrigatório ausente" }
429 { "success": false, "error": "Limite mensal atingido" }
500 { "success": false, "error": "Erro interno" }
Guia de integração
1
Copie a função sendAnon

Cole no seu projeto. Retorna uma Promise — use await ou .then/.catch.

const API_URL = "https://mesinhasserver.vercel.app/api/anonmail";

async function sendAnon({ to, subject, message }) {
  const res = await fetch(API_URL, {
    method:  'POST',
    headers: { 'Content-Type': 'application/json' },
    body:    JSON.stringify({ to, subject, message })
  });
  const data = await res.json();
  if (!data.success) throw new Error(data.error || 'Erro desconhecido');
  return data;
}
2
Chame no clique do botão
document.getElementById('btn-enviar').addEventListener('click', async () => {
  const btn = document.getElementById('btn-enviar');
  btn.disabled    = true;
  btn.textContent = 'Enviando...';
  try {
    await sendAnon({
      to:      document.getElementById('input-para').value,
      subject: document.getElementById('input-assunto').value,
      message: document.getElementById('input-mensagem').value
    });
    alert('✓ E-mail enviado anonimamente!');
  } catch(e) {
    alert('✗ Erro: ' + e.message);
  } finally {
    btn.disabled    = false;
    btn.textContent = 'Enviar';
  }
});
✓ O finally garante que o botão seja sempre reabilitado, mesmo em erros.
1
Configure o componente Web

Arraste um componente Web invisível e nomeie WebEmail. Defina o header Content-Type: application/json via Web.RequestHeaders. URL: https://mesinhasserver.vercel.app/api/anonmail.

2
Monte o JSON e envie

Use Text → join para montar a string JSON com aspas duplas. Desabilite o botão antes de chamar WebEmail.PostText.

⚠ Exemplo: {"to":"EMAIL","subject":"ASSUNTO","message":"MSG"} — substitua pelos valores dos seus TextBoxes.
3
Leia a resposta no evento GotText

Em WebEmail.GotText, cheque responseCode = 200. Para extrair o erro: segment(responseContent, "error\":\"", 2)segment(resultado, "\"", 1). Reabilite o botão ao terminar.

💡 responseCode contém o HTTP status (200, 400, 429, 500) — mais simples que parsear o JSON.