髭仙人の漫ろ歩き
HTML
............................ unworldly man go for a ramble in the internet world ...
メール送信について
 そのまま電子メールを利用


 ホームページの感想や意見などを聞かせてもらう方法はいく通りもありますが、その幾つかを実験してみました。

電子メールにリンクする   Sample01.htm
 最も簡単な方法は、電子メールアドレスをリンクして、「Outlook Express」などを立ち上げ、自由に意見や感想を送信してもらう方法です。

 <p><a href="mailto:amma@beach.ocn.ne.jp" target="_blank">メール送信</a></p>

mailto:を利用する   Sample02.htm
 ホームページの感想などをフォームに入力してもらい、それを電子メールで受け取ることも可能です。そのための最も簡単なやり方としてmailto:を利用する方法があります。
 しかし、送られてくるメールは符号化(エンコード)されていますので、これを適切に解読(デコード)してやる必要があります。
 その具体的な方法は、とほほのWWW入門の「mailto:を利用する方法」などを参照して下さい。

 <p><font size="5"><b><font size="4"> mailto:を利用する</font></b></font></p>
 <FORM METHOD="post" ACTION="mailto:amma@beach.ocn.ne.jp">
 <DIV>[題名]:<INPUT NAME="subject" SIZE="30"></DIV>
 <DIV>[氏名]:<INPUT NAME="name" SIZE="30"></DIV>
 <DIV>[E-mail]:<INPUT NAME="email" SIZE="30"></DIV>
 <DIV>[コメント]:<INPUT NAME="comment" SIZE="30"></DIV>
 <INPUT TYPE="submit" VALUE="送信">
 <INPUT TYPE="reset" VALUE="取消">
 </FORM>

 

 
メール送信フォームサービス  
 プロバイダがサポートするメール転送サービスを利用する


 多くのプロバイダがメール送信フォームサービスを始めていて、設置も非常に簡単なものが多いようですが、自分が利用しているプロバイダがサービスを行っているか確認して下さい。例えばOCNの場合は。

OCNの場合   Sample03.htm
 フォームCGIメールをつけると、ホームページを見た人からの感想などを簡単に受信することができます。フォームCGIメールを貼り付けたい場所に下記のようなHTMLをつけ加えます。
 このCGIはメール送信条件制限の都合上、GETメソッドではご利用できません。

 <FORM METHOD="post" ACTION="/cgi-bin/formmail.pl">
 <INPUT TYPE="hidden" NAME="recipient" VALUE="???@???.ocn.ne.jp">
 [題名]:<INPUT NAME="subject" SIZE="30"><BR>
 [氏名]:<INPUT NAME="name" SIZE="30"><BR>
 [E-mail]:<INPUT NAME="email" SIZE="30"><BR>
 [コメント]:<INPUT NAME="comment" SIZE="30"><BR>
 <INPUT TYPE="submit" VALUE="送信">
 <INPUT TYPE="reset" VALUE="クリア">
 </FORM>

OCNを改造した場合   Sample03A
 OCNの場合、定められてCGI(subject、name、emai、commentの4項目)に限定された範囲で入力フォームを改造することは可能です。
 一部を改造したものを掲載しますが、上記の4項目に限定されているので、利用の範囲は狭いものとなります。
 この場合、[題名]と[E-mail]項目を他の項目で使用しましたので全体の流れに無理があります。

 <FORM METHOD="post" ACTION="/cgi-bin/formmail.pl">
 <p>下記から希望する「賞品」をお選びください。</p>
 <p>・折りたたみ自転車  ・バーベキューセット  ・デジタルカメラ</p>
 <INPUT TYPE="hidden" NAME="recipient" VALUE="amma@beach.ocn.ne.jp">
 [賞品]:<INPUT NAME="subject" SIZE="30"><BR>
 [氏名]:<INPUT NAME="name" SIZE="30"><BR>
 [郵便]:<INPUT NAME="email" SIZE="30"><BR>
 [住所]:<textarea name="comment" cols="50" rows="2"></textarea>
 <BR><BR>
 <INPUT TYPE="submit" VALUE="送信">
 <INPUT TYPE="reset" VALUE="クリア">
 </FORM>

……………………………………………………………………………………………………………………

 無料ホームページの提供するフォーム機能


 無料ホームページ「Tripod」のメンバーはフォーム機能をホームページに付け加えることができます。ホームページに関するコメントや調査やクイズの回答を求めたりする場合に使用できます。

Tripodの場合   Sample04.htm
 使い方を覚えるには、サンプルを使うのが一番簡単です。これらのサンプルをあなたのホームページに貼り付けて、少し文章を変えるだけで、すぐに使えるようになります。ここでも、<FORM>タグが最も重要な要素です。"ACTION"および"METHOD"の両パラメータは、示されているとおり正確に入れる必要があります。Tripodへの登録時に提供した情報に基づいて、電子メールアドレス宛にフォームの内容がメールされます。

 <FORM ACTION="/bin/mailto" METHOD="POST">
 名前: <INPUT TYPE="TEXT" NAME="name" SIZE="30" MAXLENGTH="30"><BR>
 コメント:<BR>
 <TEXTAREA NAME="comment" ROWS="3" COLS="40"></TEXTAREA><BR>
 このページをどのようにして見つけましたか?
 <SELECT NAME="how">
 <OPTION VALUE="search engine">検索エンジン</OPTION>
 <OPTION VALUE="friend">友人</OPTION>
 <OPTION VALUE="bluebird">小さな青い鳥</OPTION>
 </SELECT><BR> ゴルゴンゾーラチーズは好きですか。
 <INPUT TYPE="RADIO" NAME="cheese" VALUE="yes"> はい
 <INPUT TYPE="RADIO" NAME="cheese" VALUE="no"> いいえ<BR>
 <INPUT TYPE="SUBMIT" NAME="submit" VALUE="送信!">
 <INPUT TYPE="RESET" NAME="reset" VALUE="リセット">
 </FORM>

Tripodを改造した場合   Sample04A.htm
 「Tripod」のフォーム機能を参照しながら、幾つかのタグを追加してみました。かなり自由にフォームを改造、手直しが出来ると判断しました。
 

……………………………………………………………………………………………………………………

 無料フォームデコードサービスを利用する


 有料、無料などいろいろありますが、「メールデコードサービス」とか「フォームデコードサービス」などと呼ばれているサービスがあります。これは単純にmailto:を利用して、フォームに記入して「送信」ボタンを押すと、記入した内容がメールとして届きます。ところが、その中身は次のようにエンコードされていてそのままでは読むことはできません。 そこで、これを自動的にデコード(解読)して、下のようなメールとしてお届けするのが「フォームデコードサービス」です。

無料フォームデコードサービス   Sample05.htm
 多数ある定型文メール自動返信サービスの中から、「フォームデコードサービス-Laguz, Inc.」を選び送信をテストしました。「フォームデコードサービス」の特徴は一般に下記の通りですが、簡単にそれなりに見栄えのある定型フォームが作成できます。

*CGIの知識がなくても自分好みのメールフォームが設置できる。
*CGI設置が不可能なプロバイダのユーザーでも、メールフォームが設置できる。

フォームデコードSの応用   Sample05A.htm
 上記の「フォームデコードサービス-Laguz, Inc.」を利用して、定型文部分を大幅に改定してみました。
 下記のHTML文の「ここからはご自由に」から「ここまではご自由に」までの部分を改定することが出来ます。それ以外はそのまま使用しますが、下記の2箇所は書き直します。

 ・VALUE="自分のメールアドレス"
 ・VALUE="自動返信デモ"

 「フォームデコードサービス」は多数ありますが、仕組みは大方同じだと想像します。若干紹介しますと

 ・アクセス支援ツール -Future Spirits-
 ・さぶみっと!JAPAN

などがあります。

 <FORM ACTION ="http://service.laguz.co.jp/decord/form00.cgi" METHOD ="POST">
 <INPUT TYPE="HIDDEN" NAME="mailto" VALUE="自分のメールアドレス">
 <INPUT TYPE="HIDDEN" NAME="subject" VALUE="自動返信デモ">
 <INPUT TYPE="HIDDEN" NAME="message0" VALUE="送信確認の画面です">
 <INPUT TYPE="HIDDEN" NAME="message1" VALUE="ありがとうございました">
 <INPUT TYPE="HIDDEN" NAME="message2" VALUE="サービス:LAGUZ,Inc.">
 <INPUT TYPE="HIDDEN" NAME="message3" VALUE="http://service.laguz.co.jp/">
 <!----------ここからはご自由に!----------->

 <!--------ここまではご自由に!------------------->
 <INPUT TYPE="submit" VALUE="送信する">
 <INPUT TYPE="reset" VALUE="リセット">
 </FORM>

……………………………………………………………………………………………………………………

 CGIでオリジナルなフォームを設置する


 サーバーが CGI をサポートしていれば、CGIによるメール送信フォームを設置することが可能です。通常のページでは、あらかじめ用意された HTML ページを表示するだけですが、CGI を用いることにより、例えば、以下のようなページを作成することができるようになります。

・カウンター
・チャット
・掲示板
・アンケートフォーム

 CGI 処理の流れは次のようになります。


Web
ブラウザ

−要求→
←結果−

WWW
サーバー

−起動→
←結果−

CGI
プログラム


(1) ブラウザがWWWサーバーに要求する
 ブラウザは特に「CGI を起動する」とは意識しません。<A HREF="〜"> や <IMG SRC="〜"> や <FORM ACTION="〜"> で記述されたアドレス(URL)を単にサーバーに要求するだけです。

(2) サーバーが CGI プログラムを起動する
 サーバーは受け取った URL を見て、これが CGI プログラムかどうか判断し、CGI プログラムであるならこれを起動します。判断の基準は拡張子が .cgi であるとかですが、サーバーの設定やプロバイダによって異なります。CGI をサポートしていないサーバーやプロバイダもあります。

(3) CGI プログラムは結果を返す
 CGI プログラムは標準出力に実行の結果を書き出します。CGI プログラムの作り方次第で、複数のファイルを読み込んで連結したり、カウンター値を演算してその結果を返すことができます。

(4) CGI プログラムの結果をブラウザに返す
 CGI プログラムが書き出した内容は、WWW サーバーを経由して、Web ブラウザに送信され、Web ブラウザはこれを表示します。

 CGIに関する詳細は「とほほのWWW入門」の「とほほのCGI入門」や「とほほのCGIソフト集」および「にほんごCGIインデックス 」の「CGIスクリプト」や「CGIサイト」などを参照して下さい。

 

 
フォーム部品について  
  フォームで使用するフォーム部品


 フォームの中には <input>、<select>、<textarea> などのフォーム部品を配置して、下記のような定型フォームを作成します。

<form>
<div align="center">
<table bgcolor="#CCFFFF">
<tr><td>名前:</td>
<td><input type=text name="NAMAE"></td></tr>
<tr><td>パスワード:</td>
<td><input type=password name="PASSWD"></td></tr>
<tr><td>転送ファイル:</td>
<td><input type=file name="TENSOU"></td></tr>
<tr><td>性別:</td>
<td><input type=radio name="SEX" value="MAN" checked>男
<input type=radio name="SEX" value="FIMALE">女 </td></tr>
<tr><td>趣味:</td>
<td><input type=checkbox name="SHUMI" value="PC">パソコン
<input type=checkbox name="SHUMI" value="SP">スポーツ
<input type=checkbox name="SHUMI" value="RD">読書 </td></tr>
<tr><td></td><td><input type=submit value=" 送信 ">
<input type=reset value=" 取消 "></td></tr>
</table></div></form>

名前:
パスワード:
転送ファイル:
性別:
趣味: パソコン スポーツ 読書

……………………………………………………………………………………………………………………


 主要なフォーム部品を列挙すると、下記のようなものが上げられます。

テキストフィールド (シングルライン)
<input type="text" name="textfield" value="テキストフィールド.">

テキストフィールド (マルチライン)
<textarea name="textfield2">テキストフィールド (マルチライン)</textarea>

テキストフィールド(パスワード)
<input type="password" name="textfield3">

ボタン(フォーム送信)
<input type="submit" name="Submit" value="送信">

ボタン(リセット)
<input type="reset" name="Reset" value="リセット">

チェックボックス
AAAA
BBBB
CCCC
<input type="checkbox" name="checkbox" value="checkbox" checked>AAAA<br>
<input type="checkbox" name="checkbox1" value="checkbox">BBBB<br>
<input type="checkbox" name="checkbox2" value="checkbox">CCCC

ラジオボタン
XXXX
YYYY
ZZZZ
<input type="radio" name="radiobutton" value="radiobutton" checked>XXXX<br>
<input type="radio" name="radiobutton" value="radiobutton">YYYY<br>
<input type="radio" name="radiobutton" value="radiobutton">ZZZZ

メニュー
<select name="select">
<option value="menu1" selected>menu1</option>
<option value="menu2">menu2</option>
<option value="menu3">menu3</option>
</select>

リスト
<select name="select2" size="3">
<option value="List1" selected>List1</option>
<option value="List2">List2</option>
<option value="List3">List3</option>
</select>

非表示フィールド
<input type="hidden" name="hiddenField">

ファイルフィールド
<input type="file" name="file" enctype="multipart/form-data">
 
CGIのオリジナルフォーム  

 CGIのサポートやパス名(置かれている場所)を確認


 このウェブサイトを設置している、ウェブサーバー「TEKIPAKI.JP ホスティングサービス」のCGIのサポートやパス名等の環境を確認。「ユーザーガイド」の一部を記載します。

ガイド4 : CGI、SENDMAIL、PHP
 CGIのパスは #!/usr/bin/perl です。
 perl version は 5.6.0-17 です。
 php version は 4.0.6-7 です。
 Sendmailのパスは /usr/lib/sendmail です。

 -------- CGI パーミッション設定は下記を参照して下さい。 --------
 ディレクトリフォルダ: 755 もしくは設定しない。
 cgi ファイル: 755
 log ファイル、dat ファイル、txt ファイル: 666
 jcode.pl ファイル: 644
 ---------------------------------------------------------

ガイド6 : PHP、.htaccess、gzip
 PHP : ご利用できます。
 .htaccess : ご利用できません。
 gzip : ご利用できます。

 簡単な説明しかありませんが、特に重要な部分を太字にしておきました。

……………………………………………………………………………………………………………………

 CGIスクリプトの動作確認


 「とほほのCGI入門」の「CGIの設置方法」を参照しながら、簡単な「CGI スクリプト」を作成して、動作確認をしました。

 [メモ帳] などのテキストエディタで次のようなテキストファイル(CGI スクリプトと呼ばれるプログラム)を作成し、「form01.cgi 」というファイル名で保存し転送しました。

簡単な「CGI スクリプト」 form01.cg
 #!/usr/local/bin/perl

 print "Content-type: text/html\n";
 print "\n";
 print "<HTML>\n";
 print "<HEAD>\n";
 print "<TITLE>テスト</TITLE>\n";
 print "</HEAD>\n";
 print "<BODY BGCOLOR=\"#FFCCCC\">\n";
 print "これはCGIのテストです。\n";
 print "</BODY>\n";
 print "</HTML>\n";

注意点
◇CGIスクリプトを、FFFTP や WS_FTP などのFTPソフトでサーバーに転送します。この時、改行コードが適切なものになるように、[テキストモード]や[ASCIIモード]で転送する。
◇CGIスクリプトのファイルのパーミッションを変更する必要があります。「パーミッションを変更するには」を参照して、CGIスクリプトのパーミッションを 755 に変更する。

 サーバーに転送したCGIスクリプトを、通常のHTMLファイルと同様にブラウザから呼び出します。「これはCGIのテストです。」と表示されれば、設置は完了です。
 もし、#!/usr/local/bin/perl や、print "..." などのCGIスクリプトがそのまま見えてしまう場合は、設置が不成功です。
 サーバー上に設置して、http://〜 で始まるURLで呼び出さないとCGIは動作しませんので注意が必要です。動作しない時は「CGIスクリプト作成時の注意」を参照しました。結果的にはいたって簡単なことですが、ここに至るまでに「悶々とした日々」と「試行錯誤を繰り返し」と「疑心暗鬼に陥りました」。結局「とほほのCGI入門」を繰り返し、繰り返し読んで、忠実にその手順を踏みました。

……………………………………………………………………………………………………………………

 指定したURLにジャンプ


 指定したURLにジャンプします。URLを http:// ではじまる完全URLで指定してください。。

簡単な「CGI スクリプト」 form02.cg
 #!/usr/local/bin/perl

 print "Location: http://xxx.yyy.zzz/\n";
 print "\n";

 「とほほのCGI入門」によると、出力の2行目は必ず空白行にしてください。これを怠ると、CGIスクリプトは動作しないようです。

……………………………………………………………………………………………………………………

 CGIスクリプトへ渡すパラメータ


 CGI スクリプトにパラメータを渡すには幾つかの方法があります。それぞれの方法で引き渡したパラメータを Perl で記述した CGI で参照する方法は、「CGIスクリプトのテンプレート」を参照してください。

◆ コマンドライン引数で渡す

 以下のような形式で CGI スクリプトを呼び出すことにより渡します。引数1、引数2が CGI スクリプトのコマンドライン引数になります。Perl の場合、これらの引数は配列 @ARGV や、環境変数 QUERY_STRING から読み出します。

http://...../cgi-bin/xxx.cgi?引数1+引数2

◆ METHOD=GETで渡す

 次のような形式でCGIスクリプトに渡します。CGIスクリプトは、これを環境変数の QUERY_STRING から読み出します。

http://...../cgi-bin/xxx.cgi?名前1=値1&名前2=値2

 環境変数のサイズには上限があるので、大きなデータを転送する時は METHOD=POST を用います。

◆ URLにスラッシュ(/)をつけて渡す

以下のような形式で CGI スクリプトを呼び出すこともできます。/引数1/引数2 の部分を環境変数 PATH_INFO で読み取ります。

http://...../cgi-bin/xxx.cgi/引数1/引数2

◆ METHOD=POSTで渡す

フォームから METHOD=POST で呼び出した場合は、データはURLではなく、標準入出力で渡されます。CGIスクリプトは、これを環境変数の CONTENT_LENGTH 分、標準入力(STDIN)から読み出します。

http://...../cgi-bin/xxx.cgi

 VALUE1=  VALUE2=

……………………………………………………………………………………………………………………

 CGIスクリプトのテンプレート


 「とほほのCGI入門」では、CGIスクリプトの動作環境、環境変数、デコード方法について参考になると思われるスクリプトを作成しています。いろいろな方法で呼び出して、実行結果をみてください。詳細は「CGIスクリプトのテンプレート」を参照してください。

◆ URLで呼び出す

http://tekipaki.jp/~amma/CGI/form03.cgi

◆ URLで呼び出す(引数付き)

http://tekipaki.jp/~amma/CGI/form03.cgi?aaa+bbb

◆ フォームからMETHOD=GETで呼び出す
VALUE1=
◆ フォームからMETHOD=POSTで呼び出す
VALUE2=

……………………………………………………………………………………………………………………

 CGIのオリジナルフォームのサンプル (1)


 CGIのオリジナルフォームの作成にあたって、Webサイトから情報を集めました。ここでは「みのねっと」の「フリーCGIみの」から手頃でシンプルなフォームメール「みのメール」をダウンロードして、CGIやjcode.pl の基本を学びました。
 最初は結構てこずり、些細な「テキストモードでFTP転送」とか「パーミッションを変更」などでつまづいていたようです。

みのねっとのフリーフォーム
 minomail.cgi  CGI本体
 jcode.pl     日本語変換perl

・Perlパス  プロバイダの定めるPerlへのパス
 perlが/usr/local/binにある場合 #!/usr/local/bin/perl
・jcode.plパス  日本語変換perl(jcode.pl)へのパス
 CGI本体と同じ場所に置いた場合 require './jcode.pl';
・$CGIFILE  CGI本体ファイル名
 $CGIFILE='./minomail.cgi';
・$TITLE  ページタイトル
 $TITLE = 'みのメール';
・$TO_MAIL  送信先メールアドレス
 $TO_MAIL = 'xxxx@xxxx.ne.jp';
・$MAILCMD  メール送信コマンド
 $MAILCMD = '/usr/sbin/sendmail -t';

 ここに掲載したサンプルは、項目数も僅かないたってシンプルなフォームメールですが、CGIが動作したと言う重要な意味があります。今後のオリジナルなフォームを製作するスタートラインにやっと立てたとの理解である。

……………………………………………………………………………………………………………………

 CGIのオリジナルフォームのサンプル (2)


 ここでは「ホームページの飾り職人」がオリジナルのCGIスクリプトをフリーウェアまたはシェアウェアで提供している「CGIスクリプト」の中から「PerlMailer 3.01」を選び、掲載しました。

PerlMailer Ver.3.01のフリーフォーム
 perlmail.cgi   プログラム本体      755
 perlmail.html  サンプルフォーム     644
 jcode.pl     日本語変換ライブラリ  644

 フォームに入力された内容をデコードしてメール送信するスクリプトです。確認画面の表示・非表示や入力必須項目を設定することができます。主特徴として下記のようなものがあります。

・サーバーに「sendmail」がインストールされている必要がある。
・ホームページのフォームに入力された内容をデコードしてメール送信する。
・複数のフォームに対応できるため、フォーム毎にCGIスクリプトを設置する必要がない。
・正規のインターネットメール形式(jis、7bit)で送信。
・POSTとGETの両方のMETHOD属性に対応。

……………………………………………………………………………………………………………………

 CGIのオリジナルフォームのサンプル (3)


 ここでは「KB's ホームページ作成のヒント」の自作 CGI ダウンロードから、アンケート、自動返信機能付メール送信プログラムの「KMAIL 2.0」を選択しました。

KMAIL 2.0 のフリーフォーム
 kmail.cgi     CGI本体
 jcode.pl     日本語変換perl

 KMAILはスタンダードなメール送信用CGIスクリプトで、CGIやPerl言語やスタイルシートはもちろん、HTMLの知識がほとんどなくても、簡単に設置できるようです。
 アップロードについても、下記のように手順を易しく記載されています。

・FTPソフトでサーバの public_html にログインする。
・public_html に kmailまたは任意の名前のディレクトリ (フォルダ) をつっくる。
・kmail ディレクトリ を開いて中に入る。
・FTPソフトをアスキー (テキスト) モードに設定する。
・kmail.cgi と jcode.pl をアップロードする。
・kmail.cgi のパーミッションを 755 に設定する。

 

 

 


Design by unworldly man Teizo AMMA
Email amma@beach.ocn.ne.jp
URL http://www.t-amma.com/