Как написать в теле 'mailto' ссылку на текущую страницу


У меня есть кнопка mailto на всех страницах моего сайта, и я хочу написать ссылку на эту страницу в теле электронной почты.

На одной странице Я могу иметь

<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>

Но как я могу сделать это общим для всех страниц?

4 10

4 ответа:

Это чистое решение javascript:

<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>

С помощью Javascript вы кодируете UTF-8-percent-hfvalues субъекта и тела с помощью encodeURIComponent () на странице 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>

Если вы делаете это на стороне сервера, вы можете просто построить ссылку mailto и выдать ее в качестве значения атрибута href. Тогда вам вообще не понадобится JS.

Я предполагаю, что ASP имеет некоторые функции кодирования URI, которые работают как encodeURIComponent().

Вы также можете просмотреть источник моей страницыmailto URI composer в качестве другого примера.

Для вас также взгляните на http://shadow2531.com/opera/testcases/mailto/mailto_uri_scheme_idea.html#send_link_by_mail и мой mailto URIсинтаксис валидатор .

Для , в которые я заключаю URI, в коде JS выше, смотрите "приложение C. разграничение URI в контексте" RFC3986 для why.

Также, вместо окна.местоположение.хреф, ты можешь использовать окно.местонахождение или документ.местоположение.href или документ.местоположение. Я обычно использую "документ.местоположение".

Почему вы используете JavaScript URI вместо атрибута onclick, смотрите этот ответ.

Также обратите внимание, что в JS URI в приведенном выше коде я обернул код в анонимную функцию. В данном случае в этом нет необходимости, так как функция не возвращает ничего, что могло бы изменить документ при нажатии. Но, это просто делать это все время для хорошей меры.

Смотрите мой Javascript URI compose , чтобы помочь с созданием javascript идентификатор URI.

Вы можете поместить JS на каждой странице, которая может изменить все hrefs всех ссылок электронной почты при загрузке документа.

Я буду использовать jQuery для примера кода, потому что это более компактно, но это может быть достигнуто также с чистым 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);
});

Вам нужно использовать &body=, чтобы включить строку в тело письма

Вот общая функция javascript

 <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>