lien mailto avec le corps HTML

j'ai un couple de liens mailto dans un document HTML.

<a href="mailto:etc...">

puis-je insérer un corps formaté HTML dans la partie mailto: du href ?

<a href="mailto:me@me.com?subject=Me&body=<b>ME</b>">Mail me</a>

notez que (2016) dans iOS, il est parfaitement correct d'ajouter <i> et <b> tags pour le formatage simple italique, gras.

238
demandé sur BalusC 2011-04-11 14:58:34

10 réponses

comme vous pouvez le voir dans RFC 6068 , ce n'est pas possible du tout:

le" corps "spécial <hfname> indique que le "corps" associé <hfvalue> est le corps du message. La valeur du champ" corps " est destinée à contient le contenu de la première partie du corps du texte message. Le champ pseudo-en-tête" body " est principalement destiné à la génération de messages texte courts pour le traitement automatique (tels que comme "abonnez-vous à" messages des listes de diffusion), et non pas général MIME corps.

380
répondu Alfonso Marin 2016-12-19 15:19:40

Pas de. Ce n'est pas du tout possible.

95
répondu Quentin 2011-04-11 11:01:31

bien qu'il ne soit pas possible d'utiliser HTML pour formater votre corps de messagerie, vous pouvez ajouter des sauts de ligne comme cela a été suggéré précédemment.

si vous êtes capable d'utiliser javascript alors" encodeURIComponent () " peut être utilisé comme ci-dessous...

var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:x@y.com?body=" + encodeURIComponent(formattedBody);
window.location.href = mailToLink;
65
répondu Oliver Pearmain 2012-05-09 16:38:54

j'ai utilisé ceci et il semble fonctionner avec outlook, pas en utilisant html mais vous pouvez formater le texte avec des sauts de ligne au moins quand le corps est ajouté comme sortie.

<a href="mailto:email@address.com?subject=Hello world&body=Line one%0DLine two">Email me</a>
46
répondu Andy 2012-02-23 11:04:04

certaines choses sont possibles, mais pas toutes, dites par exemple que vous voulez des sauts de ligne, au lieu d'utiliser <br /> utiliser %0D%0A

exemple:

<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>                        
17
répondu Stephen Kaufman 2014-12-18 14:07:23

il vaut la peine de souligner que sur Safari sur l'iPhone, au moins, l'insertion de balises HTML de base tels que <b> , <i> , et <img> (qui idéalement, vous ne devriez plus utiliser dans d'autres circonstances de toute façon, préférant CSS) dans le paramètre de corps dans le mailto: ne semble pas fonctionner - ils sont honorés dans le client de messagerie. Je n'ai pas fait de tests exhaustifs pour voir si cela est pris en charge par d'autres combos de navigateur/client de messagerie mobile ou de bureau. Il est également douteux si c'est réellement conforme aux normes. Pourrait être utile si vous construisez pour cette plate-forme, cependant.

comme d'autres réponses ont noté, vous devriez également utiliser encodeURIComponent sur le corps entier avant de l'intégrer dans le lien mailto: .

16
répondu Andrew Ferrier 2012-05-17 14:38:40

ce n'est pas tout à fait ce que vous voulez, mais il est possible en utilisant javascript moderne pour créer un fichier EML sur le client et le flux vers le système de fichiers de l'utilisateur, qui devrait ouvrir un e-mail riche contenant HTML dans leur programme de courrier, tel que Outlook:

https://stackoverflow.com/a/27971771/8595398

voici un jsfiddle d'un email contenant des images et des tableaux: https://jsfiddle.net/seanodotcom/yd1n8Lfh/

HTML

<!-- https://jsfiddle.net/seanodotcom/yd1n8Lfh -->
<textarea id="textbox" style="width: 300px; height: 600px;">
To: User <user@domain.demo>
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>95.00</td>
    </tr>
    <tr>
        <td>OU812</td>
        <td>9</td>
        <td>95.00</td>
    </tr>
    <tr>
        <td>OU812</td>
        <td>9</td>
        <td>95.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);
})();
14
répondu Matthew 2017-10-12 01:11:12

il est possible d'entrer des valeurs unicode pour insérer des lignes (i.e.: '\u0009') mais les balises HTML ont des degrés variables de support et doivent être évitées.

-2
répondu Ryan Dunphy 2013-09-13 19:54:50

j'ai travaillé de cette façon:

var newLine = escape("\n");
var body = "Hello" + newLine +"World";

sortie serait:

Hello
World  
-6
répondu Ravi Solanki 2016-11-22 09:58:47

Voici comment vous ajoutez tout à un lien MAILTO:

<a href="mailto:YourName@YourSite.com? cc=someone@YourSite.com&bcc=someoneElse@YourSite.com &subject=Shipping%20Information%20Request&body=Please%20tell%20me%20if%20my%20order%20has%20shipped!">Shipping Request</a>

chaque composant est séparé par le signe ampersand ( & ). Seulement le premier composant après l'adresse email initiale a un point d'interrogation (?) précédant l'esperluette.

URL-Encoder est la clé! donc pour votre exemple d'un corps, au lieu de votre

href='mailto:me@me.com?subject=Me&body=<b>ME</b>'

...vous pourriez essayer:

href='mailto:me@me.com?subject=Me&body=%3cb%3eME%3c%2fb%3e'

voici une autre route que vous pourriez essayer. Créer une fonction javascript pour ouvrir un objet ActiveX. Cela a la limitation malheureuse de travailler seulement dans IE et Outlook, et peut provoquer votre page à afficher des avertissements activex. Mais si vous pouvez vivre avec ces mises en garde, il fait le travail. Voici un échantillon de travail que vous pouvez tirer 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 = "me@me.com";
                    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>
-27
répondu Benjamin Johnson 2016-11-24 07:25:37