Je n'ai pas eu beaucoup à faire avec les liens mailto. Cependant, je dois maintenant ajouter un lien dans le corps d'un mailto si cela est possible.
Y a-t-il un moyen d'ajouter un lien ou de changer l'email ouvert en un email html contre un email en texte?
Quelque chose comme:
<a href="mailto:[email protected]?body=The message's first paragraph.%0A%0aSecond paragraph.%0A%0AThird Paragraph.%0A%0ALink goes here">Link text goes here</a>
La section 2 de RFC 2368 indique que le champ body
est censé se trouver dans text/plain
_ format, vous ne pouvez donc pas utiliser HTML.
Cependant, même si vous utilisez du texte brut, il est possible que certains clients de messagerie modernes rendent néanmoins une URL sous forme de lien cliquable.
Ajoutez le lien complet avec:
"http://"
au début d'une ligne, et la plupart des clients de messagerie décents le lieront automatiquement avant l'envoi, ou à l'autre extrémité lors de la réception.
Pour les URL vraiment longues qui seront probablement bouclées à cause de tous les paramètres, encapsulez le lien dans un symbole inférieur à/supérieur à. Cela indique au client de messagerie not d'envelopper l'URL.
par exemple.
<http://www.example.com/foo.php?this=a&really=long&url=with&lots=and&lots=and&lots=of&prameters=on_it>
Autant que je sache, ce n'est pas possible, puisqu'un lien nécessite du HTML et que les liens mailto ne créent pas de courrier électronique HTML.
C'est probablement pour la sécurité car vous pourriez ajouter du javascript ou des iframes à ce lien et le client de messagerie pourrait ouvrir l'utilisateur final à des vulnérabilités.
S'il vous plaît vérifier ci-dessous javascript dans IE. Je ne sais pas si un autre navigateur moderne fonctionnera ou non.
<html>
<head>
<script type="text/javascript">
function OpenOutlookDoc(){
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="a subject test";
mailItem.To = "[email protected]";
mailItem.HTMLBody = "<b>bold</b>";
mailItem.display (0);
}
catch(e){
alert(e);
// act on any error that you get
}
}
</script>
</head>
<body>
<a href="javascript:OpenOutlookDoc()">Click</a>
</body>
</html>
Voici ce que je mets ensemble. Cela fonctionne sur le périphérique mobile sélectionné pour lequel j'en avais besoin, mais je ne suis pas certain de la nature universelle de la solution.
<a href="mailto:[email protected]?subject=Me&body=%3Chtml%20xmlns%3D%22http:%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%3E%3C%2Fhead%3E%3Cbody%3EPlease%20%3Ca%20href%3D%22http:%2F%2Fwww.w3.org%22%3Eclick%3C%2Fa%3E%20me%3C%2Fbody%3E%3C%2Fhtml%3E">
J'ai implémenté la suite, cela fonctionnait pour les appareils iOS mais échouais sur Android
<a href="mailto:?subject=Your mate might be interested...&body=<div style='padding: 0;'><div style='padding: 0;'><p>I found this on the site I think you might find it interesting. <a href='@(Request.Url.ToString())' >Click here </a></p></div></div>">Share This</a>
La spécification du corps 'mailto' dit:
Le corps d'un message est constitué simplement de lignes de caractères US-ASCII. Les deux seules limites du corps sont les suivantes:
- CR et LF DOIT apparaître uniquement ensemble en tant que CRLF; ils NE DOIVENT PAS apparaître indépendamment dans le corps.
- Les lignes de caractères dans le corps DOIVENT être limitées à 998 caractères et DEVRAIENT être limitées à 78 caractères, à l'exclusion du CRLF.
https://tools.ietf.org/html/rfc5322#section-2.
De manière générale, de nos jours, la plupart des clients de messagerie sont capables d’établir des liens automatiques, mais pas tous, en raison de problèmes de sécurité. Vous pouvez probablement trouver des solutions de rechange, mais cela ne fonctionnera pas nécessairement de manière universelle.