tag - html title attribute
enlace mailto con cuerpo HTML (10)
Tengo un par de enlaces mailto
en un documento HTML.
<a href="mailto:etc...">
¿Puedo insertar un cuerpo con formato HTML en mailto:
parte de href
?
<a href="mailto:[email protected]?subject=Me&body=<b>ME</b>">Mail me</a>
Tenga en cuenta que (2016) en iOS, está perfectamente bien agregar etiquetas <i>
y <b>
para un formato de cursiva, negrita simple.
Algunas cosas son posibles, pero no todas, digamos, por ejemplo, que desea saltos de línea, en lugar de usar <br />
use %0D%0A
Ejemplo:
<a href="mailto:?subject=&body=Hello,%0D%0A%0D%0AHere is the link to the PDF Brochure.%0D%0A%0D%0ATo view the brochure please click the following link: http://www.uyslist.com/yachts/brochure.pdf"><img src="images/email.png" alt="EMail PDF Brochure" /></a>
Así es como se agrega todo a un enlace de MAILTO:
<a href="mailto:[email protected]? [email protected]&[email protected] &subject=Shipping%20Information%20Request&body=Please%20tell%20me%20if%20my%20order%20has%20shipped!">Shipping Request</a>
Cada componente está separado por el signo "&" comercial (&). Solo el primer componente después de la dirección de correo electrónico inicial tiene un signo de interrogación (?) Que precede al signo.
URL-codificar es la clave! Así que para su ejemplo de un cuerpo, en lugar de su
href=''mailto:[email protected]?subject=Me&body=<b>ME</b>''
... podrías intentar:
href=''mailto:[email protected]?subject=Me&body=%3cb%3eME%3c%2fb%3e''
Aquí hay otra ruta que podría intentar. Crea una función javascript para abrir un objeto ActiveX. Esto tiene la desafortunada limitación de solo trabajar en IE y Outlook, y puede hacer que su página muestre advertencias de activex. Pero si puedes vivir con estas advertencias, hace el trabajo. Aquí hay una muestra de trabajo que puede extraer de:
<html>
<head>
<script type=''text/javascript'' language=''javascript''>
function OpenOutlookNewEmail()
{
try
{
var outlookApp = new ActiveXObject("Outlook.Application");
var nameSpace = outlookApp.getNameSpace("MAPI");
mailFolder = nameSpace.getDefaultFolder(6);
mailItem = mailFolder.Items.add(''IPM.Note.FormA'');
mailItem.Subject = "Me";
mailItem.To = "[email protected]";
mailItem.HTMLBody = "<b>ME</b>";
mailItem.display(0);
}
catch (e)
{
alert(e);
// act on any error that you get
}
}
</script>
</head>
<body>
<a href=''javascript:OpenOutlookNewEmail()'' >email</a>
</body>
</html>
Como puede ver en RFC 6068 , esto no es posible en absoluto:
El "cuerpo" especial
<hfname>
indica que el<hfvalue>
asociado es el cuerpo del mensaje. El valor del campo "cuerpo" está destinado a contener el contenido de la primera parte de texto / cuerpo sin formato del mensaje. El campo de pseudo encabezado de "cuerpo" está destinado principalmente a la generación de mensajes de texto cortos para procesamiento automático (como mensajes de "suscripción" para listas de correo), no a cuerpos MIME generales.
Es posible ingresar valores Unicode para insertar nuevas líneas (es decir, ''/ u0009'') pero las etiquetas HTML tienen diversos grados de soporte y deben evitarse.
He trabajado de esta manera:
var newLine = escape("/n");
var body = "Hello" + newLine +"World";
La salida sería:
Hello
World
He usado esto y parece funcionar con Outlook, no con html, pero puede formatear el texto con saltos de línea al menos cuando el cuerpo se agrega como salida.
<a href="mailto:[email protected]?subject=Hello world&body=Line one%0DLine two">Email me</a>
No es exactamente lo que desea, pero es posible usar javascript moderno para crear un archivo EML en el cliente y transmitirlo al sistema de archivos del usuario, que debería abrir un correo electrónico enriquecido que contenga HTML en su programa de correo, como Outlook:
https://.com/a/27971771/8595398
Aquí hay un jsfiddle de un correo electrónico que contiene imágenes y tablas: https://jsfiddle.net/seanodotcom/yd1n8Lfh/
HTML
<!-- https://jsfiddle.net/seanodotcom/yd1n8Lfh -->
<textarea id="textbox" style="width: 300px; height: 600px;">
To: User <[email protected]>
Subject: Subject
X-Unsent: 1
Content-Type: text/html
<html>
<head>
<style>
body, html, table {
font-family: Calibri, Arial, sans-serif;
}
.pastdue { color: crimson; }
table {
border: 1px solid silver;
padding: 6px;
}
thead {
text-align: center;
font-size: 1.2em;
color: navy;
background-color: silver;
font-weight: bold;
}
tbody td {
text-align: center;
}
</style>
</head>
<body>
<table width=100%>
<tr>
<td><img src="http://www.laurell.com/images/logo/laurell_logo_storefront.jpg" width="200" height="57" alt=""></td>
<td align="right"><h1><span class="pastdue">PAST DUE</span> INVOICE</h1></td>
</tr>
</table>
<table width=100%>
<thead>
<th>Invoice #</th>
<th>Days Overdue</th>
<th>Amount Owed</th>
</thead>
<tbody>
<tr>
<td>OU812</td>
<td>9</td>
<td>$4395.00</td>
</tr>
<tr>
<td>OU812</td>
<td>9</td>
<td>$4395.00</td>
</tr>
<tr>
<td>OU812</td>
<td>9</td>
<td>$4395.00</td>
</tr>
</tbody>
</table>
</body>
</html>
</textarea> <br>
<button id="create">Create file</button><br><br>
<a download="message.eml" id="downloadlink" style="display: none">Download</a>
Javascript
(function () {
var textFile = null,
makeTextFile = function (text) {
var data = new Blob([text], {type: ''text/plain''});
if (textFile !== null) {
window.URL.revokeObjectURL(textFile);
}
textFile = window.URL.createObjectURL(data);
return textFile;
};
var create = document.getElementById(''create''),
textbox = document.getElementById(''textbox'');
create.addEventListener(''click'', function () {
var link = document.getElementById(''downloadlink'');
link.href = makeTextFile(textbox.value);
link.style.display = ''block'';
}, false);
})();
No. Esto no es posible en absoluto.
Si bien NO es posible utilizar HTML para dar formato al cuerpo de su correo electrónico, puede agregar saltos de línea como se sugirió anteriormente.
Si puede usar javascript, entonces "encodeURIComponent ()" podría ser de utilidad como a continuación ...
var formattedBody = "FirstLine /n Second Line /n Third Line";
var mailToLink = "mailto:[email protected]?body=" + encodeURIComponent(formattedBody);
window.location.href = mailToLink;
Vale la pena señalar que en Safari en el iPhone, al menos, se insertan etiquetas HTML básicas como <b>
, <i>
y <img>
(que, de todos modos, idealmente no debería usar en otras circunstancias, prefiriendo CSS) en el parámetro del cuerpo en el mailto:
parece funcionar, se respetan dentro del cliente de correo electrónico. No he realizado pruebas exhaustivas para ver si esto es compatible con otras combinaciones de cliente de correo electrónico / navegador para dispositivos móviles o de escritorio. También es dudoso que esto sea realmente compatible con los estándares. Sin embargo, podría ser útil si estás construyendo para esa plataforma.
Como han señalado otras respuestas, también debe usar encodeURIComponent en todo el cuerpo antes de insertarlo en el enlace mailto:
.