mailto:hoge@example.com?body=本文
とすると、本文をデフォルトで表示させることができます。

この本文に日本語などをエンコードしたまま渡したい場合があります。普通に body の値にエンコードした文字列を指定すると mailto をクリックしたときにブラウザが勝手にデコードしてしまいます。エンコードしたまま本文の値を渡したい場合は二重にデコードすれば、エンコードした文字列のままメーラーの本文に文字列が表示されます。

これはどういう場合に必要かというと本文に 日本語を含む URL を指定したい場合に必要になります。
例えば、
http://www.google.co.jp/search?q=日本語
という文字列を本文に入れたい場合などです。「日本語」の部分を2回エンコードすることにより
http://www.google.co.jp/search?q=%E6%97%A5%E6%9C%AC%E8%AA%9E
とエンコードしたまま、本文に表示させることができます。

実は指定された文字列を含む URL を JavaScript で mailto の本文に入れる必要がありました。結果的に以下の方法でうまく行きました。

<html>
<head>
<script>
window.onload = function() {
  var url = "http://example.com/?a=b&q="
  var q = "日本語"
  document.getElementById('mail').href = "mailto:?body="+escape(url)+encodeURI(encodeURI(q));
}
</script>
</head>
<body>
<a href="" id="mail">mailto</a>
</body>
</html>

URL の部分は escape() でエンコード、日本語の部分は encodeURI() でエンコードしました。

関連する投稿