mailto: 文字化けに次ぐ文字化け…

ウェブからメールソフトを起動させる方法として「mailto:」があります。
これは aタグにリンクとして
<a href="○○○@×××.jp">mail</a>
のように組み込むものです。
メールアドレスの後ろに
<a href="○○○@×××.jp?subject=件名&body=本文">mail</a>
とかくと件名や本文を指定することも可能です。


しかしこの件名と本文がやっかいで…各ブラウザによって不具合が生じます。

  • 件名と本文を日本語でかくとWinのFirefoxからメールソフトを起動したら文字化けする。

(WinのIE7では正常に表示される。)



そこで対応策としてjavascriptで条件分岐させることに。
<head>〜</head>内に以下の文字を記述します。


<script language="javascript">
<!--
ua = 0;
if(navigator.userAgent.indexOf("Opera") >= 0){
ua = 2;
}
else if( (navigator.userAgent.indexOf("MSIE 7.") >= 0)
&&(navigator.userAgent.indexOf("Windows") >= 0) ){
ua = 1;
}
else if( (navigator.userAgent.indexOf("MSIE 6.") >= 0)
&&(navigator.userAgent.indexOf("Windows") >= 0) ){
ua = 1;
}
else if( (navigator.userAgent.indexOf("MSIE 5.") >= 0)
&&(navigator.userAgent.indexOf("Windows") >= 0) ){
ua = 1;
}
else if( (navigator.userAgent.indexOf("Mozilla/7.") >= 0)
&&(navigator.userAgent.indexOf("Windows") >= 0) ){
ua = 1;
}
else if( (navigator.userAgent.indexOf("Mozilla/6.") >= 0)
&&(navigator.userAgent.indexOf("Windows") >= 0) ){
ua = 1;
}
else if( (navigator.userAgent.indexOf("Mozilla/5.") >= 0)
&&(navigator.userAgent.indexOf("Windows") >= 0) ){
ua = 1;
}
else {
ua = 2;
}
//-->
</script>



そして<body>〜</body>内のリンクを表示させたい箇所に以下を記述する。

<script language="javascript">
if(ua == 1) {
document.write('<a href="○○○@×××.jp?subject=%8c%8f%96%bc&body=%96%7b%95%b6" charset="shift_jis">mail</a>');
} else {
document.write('<a href="○○○@×××.jp?subject=件名&body=本文">mail</a>');
}
</script>



ちなみに画像(ボタン)からリンクさせたい場合は aタグ内に<img>タグ(この場合は「mail」の変わり)をいれるんですが、Dreamweaverなどのソフトではリンク部分は表示されません。ブラウザで確認するとちゃんと表示されますのでご安心を。
URLエンコードは↓こちら↓の便利なツールからどうぞ。
http://www.tagindex.com/tool/url.html
これで一件落着〜〜 ほっ。




と思いきや!!
出ました新たなる不具合。。。。
Office2007のOutlookでは文字化けしてたんです。涙
あ〜なんでバージョンごとに違うかな…
でもよく考えたらメールソフトなんて他にもあるし、Outlook2003でしかテストしてなかった自分のつめが甘過ぎたんです。
2007でも他のソフトでもテストしてこれならいける!という方法を模索します。
そんなのあるのかなぁ。あったらいいなぁ。とほほ…涙