サイトの文字コードがshift-jis以外の時にメールアドレスのリンク(mailto:)をクリックしたときに文字化けなしでメーラを起動する方法について解説します。
リンク文字をクリックしてメーラを起動するには以下のように記述します。
メーラを起動する為のリンク表記
<a href='mailto:test@test.com'>ここをクリックするとメーラが起動します</a>
上記の表記で記述すると以下のようになります。クリックするとメーラが起動すると思います。
ここをクリックするとメーラが起動します
メーラ起動時にメールタイトルと本文を設定する方法は次の通りです。
メーラを起動する為のリンク表記(タイトルと本文も設定)
<a href='mailto:test@test.com?subject=メールタイトル&body=メール本文'>ここをクリックするとメーラが起動します</a>
上記の表記で記述すると以下のようになります。
ここをクリックするとメーラが起動します
メーラの種類にもよると思うのですが、恐らくメーラに設定されたタイトルと本文は文字化けしていると思います。
サイトの文字コードがshift-jisの場合は上記の表記方法でも文字化けせずにメーラが起動すると思いますが、このページの文字コードはUTF-8(ASP.NETのディフォルト)になっています。
メールリンク文字を動的に作成できるのであれば、UTF-8環境(shift-jis以外の環境)でもURLエンコードする事により文字化けを解決する事ができます。
以下のコードを示しますが、URLエンコードの際にshift-jisでエンコードする事が重要です。
動的にメールリンクを作成するコード
StringBuilder buf = new StringBuilder("mailto:")
.Append("test@test.com")
.Append("?subject=")
.Append(HttpUtility.UrlEncode("メールタイトル",Encoding.GetEncoding("Shift-JIS")))
.Append("&body=")
.Append(HttpUtility.UrlEncode("メール本文",Encoding.GetEncoding("Shift-JIS")));
HypeLinkコントロール.NavigateUrl = buf.ToString();
以下のリンクはページのLoad処理にて上記コードを実行してリンク先を設定しています。
UTF-8環境で文字化けしないメールリンク