HTMLから直接メールサーバーに送る方法

CGIからメールを送れない場合はどうしたら良いでしょうか。

実はNetscape NavigatorにフォームからCGIを通さず、メールサーバーに直接送る機能があります。これを使えばCGIは必要ないのですが、残念ながらNetscape Navigatorユーザー以外からはデータを受け取れません。

しかも、受け取れてもURLエンコードされた状態なので、デコードする必要があり、少々面倒です。

しかし、やり方自体は大変簡単です。


Mailtoを使う

<FORM Action="mailto:xx@xx.xxx.xx.xx" METHOD=POST>

と指定するだけです。CGIを使う時は、Action="./xxxxx.cgi"と指定しますが、ここを、CGIに送らず、mailto:xxx@xxx.xxx.or.jp のように、mailto:を利用してSMTPサーバー(メール送信サーバー)に直接送ってしまいます。

この場合、今言ったように、URL形式というエンコード(符号化)された状態で送られますので、これをデコードする必要があります。name=%24%2B%43%5A・・・といった感じです。デコードツールはNet上に出ていますので、それを使って復元します。

尚、僕の作成したCGI処理用のフォームのデータを利用する場合は、

<META HTTP-EQUIV="Content-type" CONTENT="text/html;charset=x-euc-jp">

の部分を、

<META HTTP-EQUIV="Content-type" CONTENT="text/html;charset=iso-2022-jp">

に変更して、JISコードで保存してください。


URL形式のメールをデコードするツールは以下に有るようです。

  • Macintosh版:ClipDecoder
    Macintosh版:TransForm
  • Windows版:ClipDecoder

  • multipart/form-dataを利用する

    ところで、以下のようにENCTYPE="multipart/form-data"を付けると、デコードする必要もなくなります。

    <FORM ENCTYPE="multipart/form-data" Action="mailto:xx@xx" METHOD=POST>

    ただしこの場合は、幾つかの手順が必要です。

    まず、フォームのHTMLドキュメントをJISコードに変換してください。そしてJISコードのまま、サーバーに送ります。

    さらに以下の<META>タグを追加します。

    <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=iso-2022-jp">

    (僕の作成したCGI処理用のフォームのHTMLドキュメントを利用する場合は、<META>タグのcharset=x-euc-jp の部分をcharset=iso-2022-jp に書き換えてください。


    ただしどちらの場合もInternetExplorerでは予想通りに動作しない事を念頭においておいてください。


  • 前前前ページ:enquete.html(アンケート用フォームHTML)
  • 前前ページ:formail.cgi(CGI)の説明
  • 前ページアンケートメールの設置
  • HTMLから直接メールサーバーに送る方法

  • Copyright:ZAP 1997.4