AnonMail
Envie e-mails sem revelar sua identidade.
* campos obrigatórios
Conectando ao Firebase...
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âmetro | Req. | Descrição |
|---|---|---|
| to | ✓ | E-mail do destinatário |
| subject | ✓ | Assunto da mensagem |
| message | ✓ | Corpo 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.
A página grava o resultado em window.location.hash. No Kodular, leia via WebViewerTME.CurrentUrl no evento PageLoaded.
No Designer, arraste um WebViewer para a tela. Defina Visible → false. Nomeie-o WebViewerTME.
Crie uma variável global booleana tme_aguardando com valor inicial false. Ela evita reagir a carregamentos não relacionados no evento PageLoaded.
Use Web → UriEncode em cada valor antes de concatenar. Marque tme_aguardando = true antes de chamar GoToUrl.
Web.UriEncode em cada campo individualmente — nunca concatene texto puro com &, =, espaços ou acentos.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.
Desabilite o botão antes de chamar GoToUrl e reabilite dentro do PageLoaded, após tratar o resultado.
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.
| Campo | Req. | Descrição |
|---|---|---|
| to | ✓ | E-mail do destinatário |
| subject | ✓ | Assunto da mensagem |
| message | ✓ | Corpo da mensagem |
O campo mode não é mais necessário — a API opera exclusivamente em modo anônimo.
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; }
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'; } });
finally garante que o botão seja sempre reabilitado, mesmo em erros.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.
Use Text → join para montar a string JSON com aspas duplas. Desabilite o botão antes de chamar WebEmail.PostText.
{"to":"EMAIL","subject":"ASSUNTO","message":"MSG"} — substitua pelos valores dos seus TextBoxes.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.