El servidor que no tienes que desplegar
Tu alojamiento sigue sirviendo archivos. mailcontact recibe POST, valida, guarda y notifica: la parte dinámica que faltaba.
integraciones · approach
Dirige action a un endpoint receptor de POST. Cada envío llega a tu bandeja y avisa por Discord, Slack, email o webhook. El sitio sigue siendo archivos estáticos.
mailto falla por dos motivos: publica tu dirección rastreable y depende de un correo configurado. Puede abrir nada o una aplicación sin sesión y perder el mensaje.
El endpoint evita ambos. No expone tu dirección y usa POST estándar. mailcontact valida, guarda y avisa igual para HTML manual, generadores o páginas antiguas.
configuración recomendada
Añade este HTML a tu sitio o utiliza el generador de formularios. Sustituye el enlace por el de tu formulario. El script alojado inserta la comprobación oculta, gestiona el envío y la verificación automática y conserva el borrador si hay errores. Tú controlas el HTML y el CSS. Los formularios Free muestran un enlace visible «Processed by mailcontact.app»; Pro y Plus no. Los avisos siguen el idioma del navegador; configura data-mailcontact-language="fr" en el formulario para forzar el francés.
<form action="https://mailcontact.app/api/forms/your-form-id" method="POST" data-mailcontact-form lang="es" data-mailcontact-language="es">
<input type="hidden" name="_language" value="es" />
<fieldset>
<legend>Contáctanos</legend>
<label>
Nombre (opcional)
<input name="name" type="text" autocomplete="name" maxlength="200" />
</label>
<label>
Correo electrónico
<input name="email" type="email" autocomplete="email" maxlength="320" required />
</label>
<label>
Mensaje
<textarea name="message" rows="5" maxlength="5000" required></textarea>
</label>
<noscript>
<div aria-hidden="true" style="position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;">
<label>Sitio web
<input name="company_website" type="text" tabindex="-1" autocomplete="off" />
</label>
</div>
</noscript>
<button type="submit">Enviar mensaje</button>
</fieldset>
<p data-contact-status role="status" aria-live="polite" aria-atomic="true"></p>
</form>
<script defer src="https://mailcontact.app/forms/v1.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>Para un componente con su propio controlador de envío, carga el mismo script y utiliza MailContact.prepare(form) y MailContact.send() en lugar del marcador automático. Consulta la referencia de interfaces personalizadas para carga, avisos y atribución de Free.
el código
Este ejemplo envía directamente a la API. Mantén el campo obligatorio company_website presente y vacío. Los envíos nativos abren JSON si tienen éxito o una página de verificación si hace falta. Los scripts sin verificación envían los mensajes sospechosos a Spam; el spam claro también se retiene sin alertas ni consumo de cuota. Una respuesta de éxito confirma recepción, incluida revisión, o el descarte silencioso de una trampa rellenada. Consulta protección contra spam para conocer todo el funcionamiento.
<form action="https://mailcontact.app/api/forms/your-form-id" method="POST">
<label for="name">Name</label>
<input id="name" type="text" name="name" />
<label for="email">Email</label>
<input id="email" type="email" name="email" required />
<label for="message">Message</label>
<textarea id="message" name="message" rows="5" required></textarea>
<button type="submit">Send</button>
<input name="company_website" type="text" tabindex="-1" autocomplete="off"
style="position:absolute;left:-10000px" aria-hidden="true" />
</form>cómo funciona
Una bandeja por sitio con endpoint y email inmediatos. Sin DNS ni servidor de correo.
Pega el código en cualquier HTML y sustituye your-form-id por tu endpoint. Bastan los campos name, email y message.
Añade Discord, Slack, email o webhook. Los mensajes aparecen y avisan al llegar.
por qué mailcontact
Tu alojamiento sigue sirviendo archivos. mailcontact recibe POST, valida, guarda y notifica: la parte dinámica que faltaba.
Sin mailto, spans ofuscados ni datos rastreables. Los visitantes ven un formulario y tu dirección sigue privada.
HTML sencillo para páginas manuales y generadores. Sin compilador, framework ni scripts obligatorios.
preguntas frecuentes
Por completo. Tú controlas el HTML y CSS. El endpoint solo comprueba los nombres: email y message son obligatorios; name y subject, opcionales; company_website debe estar presente y vacío. El resto del código lo decides tú.
Un envío nativo muestra actualmente la respuesta JSON del endpoint. Para una mejor experiencia, utiliza el script alojado de MailContact: envía los campos, gestiona la verificación y muestra los avisos en la página. Actualmente no se puede configurar una redirección para los envíos nativos.
Cualquiera: GitHub Pages, Netlify, Vercel, Cloudflare Pages, un bucket de S3 o nginx sirviendo una carpeta. El formulario envía a los servidores de mailcontact y se aceptan solicitudes de cualquier origen: no hay nada que configurar en el alojamiento.
Free incluye un proyecto, un formulario, 50 envíos al mes y canales de notificación. Pro añade email entrante, diez proyectos y 1000 mensajes al mes en toda la cuenta. Los formularios tienen un límite de 20 peticiones por minuto e IP.
relacionado
Formularios y una dirección de email real, juntos, con avisos en tus herramientas. Empieza con una cuenta gratuita.
Crear formulario gratisSin tarjeta de crédito. Free incluye un proyecto y 50 mensajes de formulario al mes.