web-dev-qa-db-fra.com

Comment écrire dans le "mailto" corporel à la page actuelle

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

Dans 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 faire ce générique pour toutes les pages?

10
Chuck Norris

Ceci est 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>
34
reticent

Avec JavaScript, vous encodez UTF-8-%-Coode le sujet et le corps HFValues ​​à l'aide de Encodéturicomponent () 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 simplement créer le lien Mailto et l'émettre en tant que valeur d'attribut HREF. Ensuite, vous n'avez pas besoin de JS du tout.

J'assume ASP a quelques fonctions de codage d'URI qui fonctionnent comme Encodonchonent ().

Vous pouvez également afficher la source de My Mailto UriR Composer page comme un autre exemple.

Vous avez également consulté -- http://shadow2531.com/opera/testcases/mailto/mailto_uri_scheme_idea.html#send_link_by_mail et mon mailto uri Syntaxe Validator .

Pour le <et> que j'encase l'URI dans, dans le code JS ci-dessus, voir "Annexe C. délimiter une URI dans le contexte" de RFC3986 pour pourquoi.

Aussi, au lieu de fenêtre.Location.href, vous pouvez utiliser window.location ou document.location.href ou document.location. J'utilise normalement "document.location".

Pour pourquoi vous utilisez une URI JavaScript au lieu d'un attribut OnClick, voir cette réponse .

Notez également que dans l'URI JS dans le 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 modifierait le document lorsque vous cliquez. Mais, c'est juste le faire tout le temps pour faire bonne mesure.

Voir mon JavaScript Uri Composez pour vous aider à créer des URI JavaScript.

9
Shadow2531

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

Je vais utiliser jQuery pour le code exemple car est plus compact, mais cela peut être atteint également avec Pure JS:

$(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
Nicu Surdu

vous devez utiliser &body= Pour inclure une chaîne dans le corps du courrier électronique

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
david