mailto:を利用する方法

トップ > メール送信フォーム設置法 > mailto:を利用する方法

概要

mailto: によるメール送信フォームは、HTML さえ書ければ誰でも簡単に設置することができます。

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

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

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

設置するには

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

<form method="POST"
      action="mailto:foo@xxx.yyy.zzz">
<div>名前: <input type=text name="NAME" size=20></div>
<div>感想: <input type="text" name="MSG" size=20></div>
<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:foo1@xxx.yyy.zzz foo2@xxx.yyy.zzz">
  :
</form>

次のように指定する方法もあります。

<form method="POST"
  action="mailto:foo1@xxx.yyy.zzz?To=foo2@xxx.yyy.zzz">
   :
</form>

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

サブジェクトを指定するには

以下のようにすることで、メールのサブジェクトを指定することもできます。(対応していないブラウザもありあす。)

<form method="POST"
   action="mailto:foo@xxx.yyy.zzz?subject=TEST_MAIL">
    :
</form>

「TEST_MAIL」の部分には好きなサブジェクトを指定することができます。スペースを用いる場合はエンコードされた %20 を用いて「TEST%20MAIL」のように記述してください。英文を用いるのが無難ですが、直接日本語を用いてもうまくいくケースもあるようです。


Copyright (C) 1997-2003 杜甫々
初版:2002年5月18日、最終更新:2003年3月21日
http://www.tohoho-web.com/wwwmail1.htm