mailto で本文をエンコードしたまま表示する方法
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() でエンコードしました。
関連する投稿
コメントをどうぞ
Additional comments powered by BackType