Nivel inicial5 min de lectura · Publicado el

Generador de código mailto: enlaces con asunto y cuerpo

Enlace mailto con asunto y cuerpo: un sobre con mailto:, cc, subject y body rellenos, y sellos con %20 para el espacio y %0D%0A para el salto. mailto: asunto y cuerporubentejera.com mailto:[email protected]?cc=[email protected]&subject=Presupuesto&body=Hola%2C%20Ana%20espacio%0D%0Asalto
El sobre es el enlace: el destinatario va tras mailto:, la copia en cc, el asunto en subject y la carta en body. Los sellos recuerdan cómo codificar: espacio, %20 (no +), y salto de línea, %0D%0A.

Un enlace mailto: es como un sobre ya rellenado: el lector solo tiene que revisar el mensaje y darle a enviar.

El generador de CHA: qué es y qué falla

El enlace original de este artículo lleva a CHA’s Mailto Code Generator, de Cook-Hauptman Associates (la página cita como autor a James E. Cook). Es un formulario muy sencillo:

  • Rellenas To, CC, BCC, Subject y Body.
  • Te devuelve la URL mailto: o la etiqueta <a href="mailto:…"> completa, lista para pegar.
  • Debajo explica la notación: ?, =, & y los códigos %.

Sigue funcionando, con matices:

Lo que conviene saber Por qué importa
Solo abre bien por http://: por https:// el certificado no es válido Si entras con https://, verás un aviso de seguridad
Es código de hace más de 25 años: el propio código fuente cita un ejemplo de Netscape de 1999 No se mantiene
Codifica con la función antigua escape() La ñ sale como %F1 y el ¿ como %BF (Latin-1), no en UTF-8 como pide el estándar actual. Muchos programas de correo mostrarán caracteres raros
Los saltos de línea salen como %0A El estándar pide %0D%0A; la mayoría de clientes lo aceptan igualmente
Dice que + vale como espacio En mailto: no: el + es un carácter real

Para textos sin tildes te sirve. Para mensajes en español, mejor el generador de abajo.

La sintaxis

<a href="mailto:[email protected][email protected]&subject=Hola&body=Primera%20l%C3%ADnea">
  Escríbeme
</a>
Parte Para qué sirve Ejemplo
mailto: Indica que es un enlace de correo mailto:[email protected]
Destinatarios Uno o varios, separados por comas mailto:[email protected],[email protected]
? Empieza la lista de campos ?subject=Hola
& Separa un campo del siguiente ?subject=Hola&body=Qué%20tal
cc y bcc Copia y copia oculta [email protected]
subject Asunto subject=Presupuesto
body Cuerpo del mensaje body=Hola%2C%20Ana

Las reglas de codificación

Los textos van dentro de una URL, así que algunos caracteres se escriben con un código %:

Carácter Se escribe Por qué
Espacio %20 El + no vale: en muchas direcciones es un carácter real ([email protected])
Salto de línea en el cuerpo %0D%0A Es el salto de línea que pide el estándar
&, ?, = %26, %3F, %3D Si no, se confunden con los separadores
# %23 Si no, el navegador lo trata como un ancla
Tildes, ñ, ¿ En UTF-8, como %C3%B1 El estándar pide UTF-8

Un generador en JavaScript

encodeURIComponent hace casi todo el trabajo. Solo hay que convertir antes los saltos de línea a \r\n para que salgan como %0D%0A:

// Codifica un texto para mailto: espacios como %20 y saltos de línea como %0D%0A
const encode = (text) => encodeURIComponent(text.replace(/\r?\n/g, "\r\n"));

function mailto({ to = [], cc = [], bcc = [], subject = "", body = "" }) {
  const fields = [];
  if (cc.length) fields.push(`cc=${cc.join(",")}`);
  if (bcc.length) fields.push(`bcc=${bcc.join(",")}`);
  if (subject) fields.push(`subject=${encode(subject)}`);
  if (body) fields.push(`body=${encode(body)}`);
  const query = fields.length ? `?${fields.join("&")}` : "";
  return `mailto:${to.join(",")}${query}`;
}

console.log(mailto({
  to: ["[email protected]"],
  cc: ["[email protected]"],
  subject: "Presupuesto web & SEO",
  body: "Hola, Ana:\n¿Hablamos el lunes?",
}));

Resultado:

mailto:[email protected][email protected]&subject=Presupuesto%20web%20%26%20SEO&body=Hola%2C%20Ana%3A%0D%0A%C2%BFHablamos%20el%20lunes%3F

Fíjate en que el & del asunto se ha convertido en %26: sin eso, el programa de correo cortaría el asunto en «Presupuesto web ».

Límites

  • Depende del lector. Si no tiene un programa de correo configurado, el enlace no hace nada útil. Muestra también la dirección en texto.
  • Expone la dirección. Las direcciones de un mailto: en una web pública pueden acabar en listas de spam, incluidas las de bcc.
  • Mensajes cortos. Para formularios largos o adjuntos, usa un formulario de verdad.

Si te interesa cómo elegir una dirección de correo fácil de leer y recordar, mira Direcciones de correo para humanos.

Fuentes

  • RFC 6068, «The ‘mailto’ URI Scheme» (IETF): sintaxis, codificación de espacios, saltos de línea, UTF-8 y aviso sobre la exposición de direcciones.
  • El generador se ha ejecutado con Node.js 24.21.0; el resultado mostrado es su salida real.
  • CHA’s Mailto Code Generator, revisado el 7 de noviembre de 2026: responde por HTTP; por HTTPS da un certificado autofirmado. Su código usa escape(); la salida de escape("Año") (A%F1o) y escape("¿Hablamos?") (%BFHablamos%3F) se ha comprobado con Node.js 24.21.0.
  • Se ha quitado la imagen decorativa de banco del original.