如何写入'mailto'正文链接到当前页面

时间:2011-11-02 07:50:24

标签: javascript html href

我的网站的所有页面都有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 个答案:

答案 0 :(得分:33)

这是纯粹的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>

答案 1 :(得分:9)

使用Javascript,您可以在UTF-8页面上使用encodeURIComponent()对主题和正文hfvalue进行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 syntax validator

对于&lt;和&gt;我在上面的JS代码中包含了URI,参见&#34;附录C.在上下文中划分URI&#34; RFC3986的原因。

此外,您可以使用window.location或document.location.href或document.location代替window.location.href。我通常使用&#34; document.location&#34;。

为什么使用Javascript URI而不是onclick属性,请参阅this answer

另请注意,在上面代码中的JS URI中,我将代码包装在匿名函数中。在这种情况下,这不是必需的,因为当您单击时,函数不会返回任何会更改文档的内容。但是,它只是一直这样做才能做好准备。

请参阅我的Javascript URI compose以帮助创建javascript URI。

答案 2 :(得分:3)

您可以在每个页面上放置JS,以便在文档加载时修改所有电子邮件链接的所有href。

我将使用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);
});

答案 3 :(得分:1)

您需要使用&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>