web-dev-qa-db-ja.com

現在のページへの「mailto」ボディリンクを書き込む方法

私のサイトのすべてのページにmailtoボタンがあり、そのページへの参照を電子メールの本文に書きたいのですが。

1ページで

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

しかし、どのようにすればこれをすべてのページに汎用的にできるでしょうか?

10
Chuck Norris

これは純粋な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>
34
reticent

Javascriptでは、UTF-8ページでencodeURIComponent()を使用して、件名と本文のhfvalueをutf-8-percent-encodeします。

<!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には、encodeURIComponent()のように機能するいくつかのURIエンコード関数があると思います。

別の例として、my mailto URI composer ページのソースを表示することもできます。

http://shadow2531.com/opera/testcases/mailto/mailto_uri_scheme_idea.html#send_link_by_mail とmy mailto URIもご覧ください。構文バリデータ

URIを入れる<と>については、上記のJSコードで、RFC3986の「付録C. URIをコンテキストで区切る」を参照してください。

また、window.location.hrefの代わりに、window.location、document.location.href、またはdocument.locationを使用できます。通常は「document.location」を使います。

Onclick属性の代わりにJavaScript URIを使用する理由については、 this answer を参照してください。

上記のコードのJS URIでは、コードを無名関数でラップしたことにも注意してください。この場合、関数をクリックしても、ドキュメントを変更するようなものは何も返されないため、これは必要ありません。しかし、それは常に適切に測定することです。

JavaScript URIの作成については、my Javascript URI compose を参照してください。

9
Shadow2531

ドキュメントが読み込まれたときにすべてのメールリンクのすべてのhrefを変更できるJSをすべてのページに配置できます。

よりコンパクトなため、サンプルコードには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
Nicu Surdu

メール本文に文字列を含めるには、&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>
1
david