mailto:を利用する方法

とほほのWWW入門 > メール送信フォーム設置法 > mailto:を利用する方法
2000年3月4日版

概要

HTMLさえ書ければ誰でも簡単に設置することができます。

しかし、送られてくるメールは %82%A0 のように符号化(エンコード)されていますので、これを適切に解読(デコード)してやる必要があります。

また、送信時の動作はブラウザの種類やバージョン、設定状況によって異なったり、メール送信ソフトがインストールされていない場合は、せっかく入力項目に一生懸命入力したのに、送信ボタンを押したら送信失敗、入力した内容が水の泡・・・となるケースも多いようです。

可能であれば、次章のCGIを用いた方法にするか、それが無理なら、「この送信フォームは mailto: を用いています。mailto: による送信が不可能な場合は直接○○にメールを・・・」などのように、注意書きをしておくことをオススメします。

設置方法

HTML文書中に次のような記述をしてください。METHOD=POST を忘れないで指定してください。mailto:の後ろのメールアドレスは自分のメールアドレスに書き換えてください。

<FORM METHOD=POST
      ACTION="mailto:foo@xxx.yyy.zzz">
<BR>名前: <INPUT TYPE=text NAME="NAME" SIZE=40>
<BR>感想: <INPUT TYPE="text" NAME="TESTMSG" SIZE=40>
<P>
<INPUT TYPE=submit VALUE="  送信  ">
<INPUT TYPE=reset  VALUE="  取消  ">
</FORM>

(↑)これを表示するとこう(↓)なります。


名前:
感想:

<FORM>〜</FORM>がひとつのフォームとなります。 フォームについての詳細は「HTMLリファレンス」を参照してください。 TYPE=resetのボタンを押すと、入力したデータがクリアされます。 TYPE=submitのボタンを押すと、<INPUT ...>で入力したデータが mailto:〜のメールアドレスに送信されます。

メッセージのデコード

mailto:で送信されたメッセージは、通常、次のようにエンコードされた状態で送信されます。
    TESTMSG=%82%A0%82%A2%82%A4
<FORM ENCTYPE="text/plain" ....> のようにENCTYPE属性をつけておくとエンコードされないテキストのまま送信することができますが、メールの経路によっては文字化けしたり、別の形式にエンコードされてしまったりすることがあります。 (この方法は「シフトJIS送信」という掟破りの方法になりますので、あまりお勧めできません。)

エンコードされた文字列をデコード(読めるように)するには、次のようなツールを用います。

あまり便利ではありませんが、次のような JavaScript を記述した簡単な自作Webページでデコードすることもできます。(ただし、最近のInternet Explorerでは、漢字コードにUnicodeを使用しているため、うまく動作しないようです。)
<FORM>
<INPUT TYPE=text NAME=t1>
<INPUT TYPE=button VALUE="変換→"
onClick="this.form.t2.value=unescape(this.form.t1.value)">
<INPUT TYPE=text NAME=t2>
</FORM>

サブジェクトを指定する

以下のようにすることで、メールのサブジェクトを指定することもできます。(対応していないブラウザもありあす。)
    <FORM METHOD=POST
       ACTION="mailto:foo@xxx.yyy.zzz?subject=TEST_MAIL">
        :
    </FORM>
「TEST_MAIL」の部分には好きなサブジェクトを指定することができます。スペースを用いる場合はエンコードされた %20 を用いて「TEST%20MAIL」のように記述してください。英文を用いるのが無難ですが、直接日本語を用いてもうまくいくケースもあるようです。

ただし、これらの記述は、そのページからメールを送信する人の環境に依存しますので、自分の環境でうまくいったとしても、送信者の環境ではうまくいかないケースがありますので、注意してください。


Copyright (C) 1996-1999 とほほ
http://wakusei.cplaza.ne.jp/twn/wwwmail1.htm