Comment écrire dans le corps' mailto ' lien vers la page courante

j'ai mailto bouton dans toutes les pages de mon site et je veux écrire référence à cette page dans le corps du message électronique.

en une page je peux avoir

<a class="email" title="Email a friend" href="mailto:?subject=Interesting%20information&amp;body=I thought you might find this information interesting:%20%0d%0ahttp://www.a.com/Home/SiteMap/tabid/589/Default.aspx">Email</a>

mais comment puis-je rendre cela générique pour toutes les pages?

10
demandé sur Chuck Norris 2011-11-02 11:50:24

4 réponses

Voici la solution javascript pure:

<a class="email" title="Email a friend" href="#" onclick="javascript:window.location='mailto:?subject=Interesting information&body=I thought you might find this information interesting: ' + window.location;">Email</a>
32
répondu reticent 2011-11-02 08:00:37

avec Javascript, vous UTF-8-percent-encodez les valeurs HF du sujet et du corps en utilisant encodeURIComponent() sur une page UTF-8.

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title></title>
        <script>
            function SendLinkByMail(href) {
                var subject= "Interesting Information";
                var body = "I thought you might find this information interesting:\r\n\r\n<";
                body += window.location.href;
                body += ">";
                var uri = "mailto:?subject=";
                uri += encodeURIComponent(subject);
                uri += "&body=";
                uri += encodeURIComponent(body);
                window.open(uri);
            }
        </script>
    </head>
    <body>
        <p><a href="javascript:(function()%7BSendLinkByMail()%3B%7D)()%3B">Email link to this page</a></p>
    </body>
</html>

si vous faites ce côté serveur, vous pouvez juste construire le lien mailto et l'émettre comme valeur de l'attribut href. Alors, tu n'auras pas besoin de JS.

je suppose que ASP a quelques fonctions d'encodage URI qui fonctionnent comme encodeURIComponent ().

Vous pouvez aussi voir la source de mon mailto URI composer page comme une autre exemple.

Vous pouvez également jeter un oeil à http://shadow2531.com/opera/testcases/mailto/mailto_uri_scheme_idea.html#send_link_by_mail et mon mailto URI syntaxe validateur.

Pour les < et > que je recouvrent l'URI, dans le code JS ci-dessus, consultez l'Annexe C. la Délimitation d'un URI dans le Contexte" de RFC3986 pourquoi.

aussi, au lieu de fenêtre.emplacement.href, tu peux utiliser window.emplacement ou d'un document.emplacement.href ou document.emplacement. J'utilise normalement "document".emplacement."

pour savoir pourquoi vous utilisez un URI Javascript au lieu d'un attribut onclick, voir cette réponse.

notez aussi que dans le JS URI du code ci-dessus, j'ai enveloppé le code dans une fonction anonyme. Ce n'est pas nécessaire dans ce cas car la fonction ne renvoie rien qui pourrait changer le document lorsque vous cliquez. Mais, c'est de le faire tout le temps pour une bonne mesure.

Voir mon Javascript URI compose aide à la création d'URIs javascript.

8
répondu Shadow2531 2017-05-23 12:10:25

Vous pouvez mettre un JS sur chaque page qui peut modifier tous les hrefs de tous les liens e-mail lorsque le document se charge.

je vais utiliser jQuery pour le code d'exemple parce que c'est plus compact, mais cela peut être réalisé aussi avec JS pur:

$(document).ready(function(){
    $(".email").attr("href", "mailto:?subject=Interesting%20information&amp;body=I thought you might find this information interesting:%20%0d%0a"+window.location);
});
3
répondu Nicu Surdu 2011-11-02 08:00:10

vous devez utiliser &body= pour inclure une chaîne de caractères dans le corps de l'email

voici une fonction javascript Générique

 <script>
   function emailFriend(){

   var strrep ,ptitle = document.title;

strrep= ptitle.replace(/"/g,'%22');
strrep= ptitle.replace(/&/g,'%26');

var mailtourl = "mailto:?subject=Interesting%20information&body=I thought you might find this information interesting: "+encodeURIComponent(location.href);
location.href = mailtourl;
return false
}

 </script>


<a href="javascript:;" onclick="emailFriend();return false">Email</a>
1
répondu david 2011-11-02 08:17:34