¿Puedo configurar el asunto / contenido del correo electrónico usando mailto :?

Respuestas:

1460

Sí, mira todos los consejos y trucos con mailto: http://www.angelfire.com/dc/html-webmaster/mailto.htm

Ejemplo de asunto mailto:

<a href="mailto:[email protected]?subject=free chocolate">example</a>

mailto con contenido:

<a href="mailto:[email protected]?subject=look at this website&body=Hi,I found this website and thought you might like it http://www.geocities.com/wowhtml/">tell a friend</a>

Como se aludió en los comentarios, ambos subjecty se bodydeben escapar correctamente. Úselo encodeURIComponent(subject)en cada uno, en lugar de la codificación manual para casos específicos.

Como Hoody mencionó en los comentarios, puede agregar saltos de línea agregando la siguiente secuencia codificada en la cadena:

%0D%0A // one line break
Haim Evgi
fuente
29
¿Es posible usar HTML para el cuerpo?
Jiew Meng el
18
Eso es completamente específico del cliente. En el caso general, no.
Tripleee
44
Solo como referencia: no tienes que escapar del tema
Oscar Pérez
17
Tenga en cuenta que W3C requiere que codifique su cadena siguiendo esas reglas: los caracteres deben representarse en NFC y los espacios deben escaparse como% 20.
gordie
96
En caso de que alguien más se pregunte, también puede agregar saltos de línea al cuerpo utilizando la secuencia% 0D% 0A - cubetoon.com/2008/…
Hoody
39

El mailto:esquema de URL se define en RFC 2368 . Además, la convención para codificar información en URL y URI se define en RFC 1738 y luego en RFC 3986 . Estos prescriben cómo incluir los encabezados bodyy subjecten una URL (URI):

mailto:infobot@example.com?subject=current-issue&body=send%20current-issue

Específicamente, debe codificar en porcentaje la dirección de correo electrónico, el asunto y el cuerpo y ponerlos en el formato anterior. El texto codificado en porcentaje es legal para su uso en HTML, sin embargo, esta URL debe estar codificada por entidad para su uso en un hrefatributo, de acuerdo con el estándar HTML4 :

<a href="mailto:[email protected]?subject=current-issue&amp;body=send%20current-issue">Send email</a>

Y, en general, aquí hay un script PHP simple que codifica según lo anterior.

<?php
$encodedTo = rawurlencode($message->to);
$encodedSubject = rawurlencode($message->subject);
$encodedBody = rawurlencode($message->body);
$uri = "mailto:$encodedTo?subject=$encodedSubject&body=$encodedBody";
$encodedUri = htmlspecialchars($uri);
echo "<a href=\"$encodedUri\">Send email</a>";
?>
William Entriken
fuente
Aquí hay un ejemplo mucho más profundo de si su correo electrónico tiene una URL y esa URL tiene cosas que deben codificarse: stackoverflow.com/questions/4744888/…
William Entriken
1
Creo que hay un error tipográfico en la línea $uri = ...: el &frente de subjectdebería ser un?
jost21
24

Puede agregar el asunto agregado al comando mailto utilizando cualquiera de las siguientes formas. Agregue? Asunto out mailto a la etiqueta mailto.

<a href="mailto:[email protected]?subject=testing out mailto">First Example</a>

También podemos agregar texto al cuerpo del mensaje agregando & body al final de la etiqueta como se muestra en el ejemplo a continuación.

 <a href="mailto:[email protected]?subject=testing out mailto&body=Just testing">Second Example</a>

Además del cuerpo, un usuario también puede escribir & cc o & bcc para completar los campos CC y BCC.

<a href="mailto:[email protected]?subject=testing out mailto&body=Just testing&[email protected]&[email protected]">Third
    Example</a>

Cómo agregar un asunto a la etiqueta mailto

niksmac
fuente
13

Creé una herramienta de código abierto para facilitar esto. Ingrese las cadenas que desee e instantáneamente obtendrá mailto:

mailto.now.sh

💌⚡️ plantilla de correos electrónicos completos en un mailto

ingrese la descripción de la imagen aquí

Dawson B
fuente
12
mailto:joe@company.com?subject=Your+subject
Payne
fuente
1
Mi subjectno es texto. Es una Mesa. Cómo agregar eso.
David
9

Lo dividí en líneas separadas para hacerlo un poco más legible.

<a href="

    mailto:[email protected]

    ?subject=My+great+email+to+you

    &body=This+is+an+awesome+email

    &[email protected]

    &[email protected]

">Click here to send email!</a>
malicioso
fuente
1
esta pregunta fue respondida hace 5 años
varun aaruru
14
y todavía se usa hoy cuando quieres enviar algo por correo
2016
7

Si:

Use esto para experimentar con elementos de formulario mailto y codificación de enlaces.

Puede ingresar asunto, cuerpo (es decir, contenido), etc. en el formulario, presionar el botón y ver el enlace mailto html que puede pegar en su página.

Incluso puede especificar elementos que rara vez se conocen y usan: cc, bcc, de correos electrónicos.

woz
fuente
También una característica muy útil de este compositor de campos href es la capacidad de codificar todos los caracteres en hexadecimal (por ejemplo , se [Test Zõne]convierte en %5BTest%20Z%C3%B5ne%5D, esto puede evitar algunos bots de spam).
Armfoot
Quiero decir, si eliges codificar todos los caracteres, todos se convertirán a notación HTML &#x(evitando algunos bots de spam).
Armfoot
44
Este enlace está muerto.
Bram Vanroy
6

Sí, te puede gustar esto:

mailto: email@host.com?subject=something
MeanEYE
fuente
2
¿No creo que el espacio debería estar allí?
nafg
Esto debería ser sin espacio.
Hassan Raza
5

Tenga en cuenta que no es posible usar HTML en el cuerpo del mensaje, de acuerdo con RFC 2368 :

El hname especial "body" indica que el hvalue asociado es el cuerpo del mensaje. El nombre de "cuerpo" debe contener el contenido de la primera parte de texto / cuerpo sin formato del mensaje. La URL de mailto está destinada principalmente a la generación de mensajes de texto cortos que en realidad son el contenido del procesamiento automático (como mensajes de "suscripción" para listas de correo), no cuerpos MIME generales.

Crédito: https://stackoverflow.com/a/13415988/1835519

Jure Sah
fuente
2
La pregunta es cómo configurar el tema y el contenido. No mencionó el formato. Si bien es algo útil tener en cuenta en una respuesta, omitió un poco sobre lo que es posible y cómo lograrlo. Sin eso, este es un comentario, no una respuesta.
Quentin
Jure, realmente aprecio que hayas puesto esto como una respuesta a esta pregunta, ya que eso es EXACTAMENTE lo que necesitaba averiguar y me preguntaba. Entonces, aunque Quentin cree que esto no responde a la pregunta de OP, responde a la mía que estaba buscando y que trajo a colación esta publicación. Muchas gracias Jure!
user1567291
3

Aquí hay un fragmento ejecutable para ayudarlo a generar mailto: enlaces con asunto y cuerpo opcionales.

function generate() {
  var email = $('#email').val();
  var subject = $('#subject').val();
  var body = $('#body').val();

  var mailto = 'mailto:' + email;
  var params = {};
  if (subject) {
    params.subject = subject;
  }
  if (body) {
    params.body = body;
  }
  if (params) {
    mailto += '?' + $.param(params);
  }

  var $output = $('#output');
  $output.val(mailto);
  $output.focus();
  $output.select();
  document.execCommand('copy');
}

$(document).ready(function() {
  $('#generate').on('click', generate);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="email" placeholder="email address" /><br/>
<input type="text" id="subject" placeholder="Subject" /><br/>
<textarea id="body" placeholder="Body"></textarea><br/>
<button type="button" id="generate">Generate & copy to clipboard</button><br/>
<textarea id="output">Output</textarea>

congusbongus
fuente
1

Si desea agregar contenido html a su correo electrónico, codifique su código html para el cuerpo del mensaje e inclúyalo en su código de enlace mailto, pero el problema es que no puede establecer el tipo de correo electrónico desde este enlace de texto sin formato a html, el cliente que usa el enlace necesita su cliente de correo para enviar correos html por defecto. En caso de que desee probar aquí, está el código para un enlace simple de mailto, con una imagen envuelta en un enlace (URL de estilo angular añadidas para visibilidad):

<a href="mailto:?body=%3Ca%20href%3D%22{{ scope.url }}%22%3E%3Cimg%20src%3D%22{{ scope.url }}%22%20width%3D%22300%22%20%2F%3E%3C%2Fa%3E">

Las etiquetas html están codificadas en url.

serdarsenay
fuente
¿Puedes publicar también un ejemplo donde el cuerpo <a href> solo tenga el href y un texto entre él y la etiqueta final? Gracias
user1567291
<a href="<same as above> "> Este es el texto del enlace </a> @ user1567291
serdarsenay
Esto no funciona El cliente de correo electrónico solo mostrará todas las etiquetas html como texto en lugar de procesarlo como un documento de texto enriquecido.
Ε Г И І И О