[PR]tDl:N50000lt]EpI

CGIでメール機能を使いたい


ココにメールください 今はinfoseek iswebもメール機能を使用できるようになったので、この情報は不要になってしまいましたが・・・

今、私が使用しているこのホームページ infoseek iswebは、無料でホームページが持て、更にCGIを使うことができます。しかしサーバ負荷のかかるCGIは禁止されています。また迷惑メールなどを防止するため、一部のPerl関数なども使用禁止とされています。そのためホームページ上でアンケート等を記入してもらい、その結果を自分のEメールアドレスに送信させることができません。

それでは、あきらめなくてはいけないのでしょうか。infoseek isweb利用者のホーム・ページでアンケートページを作られている方も結構いるようです。これから説明する方法ならCGIが使用できないプロバイダを利用されている方でも、訪問者から直接アンケートの答えを頂くことができます。

このページを作るきっかけになったのは、たまたま私のページにアクセスされた方が「他のサイトで見つけたアンケートページのCGIを infoseek iswebで実行させたのにエラーになってしまうがどうしてか?」というご質問をいただいたからです。調べてみるとPerlそのもには何の問題もありませんでした。特定の関数を使用するとエラーとなるようで、「他に方法はないのですか?」と再度聞かれましたので、調べたところ非常に便利なサイトを多くの方が利用されていることがわかりました。

そのサイトは「Alto World」さんで、フォームデコーダ・サービスを無料で使わせてくれるのです。使い方は「Alto World」さんの「フォームデコーダ・サービス」ページをよく読んでください。私のページでも利用方法について説明しますが、くれぐれもAlto World さんに迷惑のかからないように注意してください。特に「フォームデコードサービスの使い方」の「注意」を読んでから設定してください。無料のサービスですので、サーバーの停止やその他のエラーなどでメールが機能しなくなってもクレームはつけられないことは理解しておいてください。
ココのアンケートです」を用意しました。よろしければご協力お願い致します。下の説明と「ココのアンケートです」のソースコードを参考にすると、簡単にアンケートページを作れますよ。

前置きが長くなりましたが、使い方を説明します。
フォーム・タグの最初に、下のURLを入れるだけです。
<form method="post" action="http://www.altoworld.com/form2/post.cgi">
上の記述は変更しないでください。必ず上のURLを使用し、メソッドもPOSTのままにしておいてください。
フォーム・タグ内の質問は自由に設定しても構いません。そして最後にフォーム・タグを閉じます(</form>)。

そうでした、これでは自分にメールを送ることはできませんね。
<form method="post" action="http://www.altoworld.com/form2/post.cgi">
<input type="hidden" name="_mailto" value="ここにあなたのメールアドレスを入れます">

私の場合は value="cocochan@yahoo.co.jp" になります。



それでは簡単なアンケートを作ってみましょう。(下から私にメールを送れますが、ここでは送らないでください。)

お名前を教えてください
(ハンドルネームでも結構です)
メールアドレスも教えて
Coco's Homeはいかがでしたか? 非常に良かった!  良かった!
どうでもいい!  最悪!!!
一言どうぞ!
 

上のHTMLはこのようになっています。
<form method="post" action="http://www.altoworld.com/form2/post.cgi">
<input type="hidden" name="_mailto" value="cocochan@yahoo.co.jp">
<input type="hidden" name="_location" value="http://isweb36.infoseek.co.jp/computer/cocohome/thanks.html">
<input type="hidden" name="_subject" value="ココのアンケートへの返事だよ(練習1)">
<table border="1" bgcolor="#AADDAA">
<tr><td>お名前を教えてください</td><td><input type="tex"t name="name" size="30"><br>(ハンドルネームでも結構です)</td></tr>
<tr><td>メールアドレスも教えて</td><td><input type="text" name="mail" size="30"></td></tr>
<tr><td>Coco's Homeはいかがでしたか?</td>
<td><input type="radio" name="Doudesu" value="非常に良かった!">非常に良かった! 
<input type="radio" name="Doudesu" value="良かった!">良かった!<br>
<input type="radio" name="Doudesu" value="どうでもいい!" checked>どうでもいい! 
<input type="radio" name="Doudesu" value="最悪!!!">最悪!!!</td></tr>
<tr><td>一言どうぞ!</td><td><textarea name="comment" rows="5" cols="40" wrap="soft"></textarea></td></tr>
<tr><td> </td><td align="center"><input type="submit" value="送信"></td></tr>
</table>
</form>
一番上の行は変えないでくださいね。それから二行目のメールアドレスは必ずあなたのアドレスに変えてください。三行目のURLも、あなたのURLにしてださい。間違えるとフォームデコードサービスの方や他の方に迷惑が掛かりますから注意してください。後はどう変えても構いません。
簡単にフォーム・タグについて説明します。もっと詳しく書け!と言われる方は連絡ください。
<form method="xxxxxx" action="zzzzz"> 〜 <form>
<form>と</form>の間に入力形式を指定します。
xxxxx にはPOSTかGETが入ります。NNNさんのフォームデコードサービスを使う場合はPOSTです(POST とGETについては知りたい方は「テキストの色替え」を参照してください)。

form タグの中では、<input><select><textarea>を使えます。
<input>のtypeにはtext(テキスト入力)、password(パスワード入力)、checkbox(項目選択で同時に複数選択できる)、radio(項目選択で単数の選択)、hidden(画面には表示されずに、サーバにデータを渡す)、submit(送信ボタン)、reset(クリアボタン)などがあります。

<select> ここでは使用していませんが、プルダウン形式で表示されます。例えばこんな感じです。

<textarea>はテキスト入力欄です。オプションで縦横の入力エリアの幅を指定できます。ただしインターネットエクスプローラーとネットスケープでは幅が大きく異なりますので注意してください。

さて先ほどの例を説明しましょう。
<input type="hidden" name="xxxxx" value="zzzzz">とあるのは、ブラウザには表示せずに、CGIでサーバ側にname="xxxxx"の結果がzzzzzとして渡されるのです。ここではCGIで使い方が決まっています。
name="_mailto"のvalueとしてあなたのメールアドレスを入れます。
name="_subject"のvalueにはEメールのタイトル(好きなように変えてください)を入れます。
<input type="hidden" name="_location" value="http://isweb36.infoseek.co.jp/computer/cocohome/thanks.html">
では、送信後に表示させたいURLを指定します。valueに書き入れるURLは ./xxx.html というようにするのではなく、http://isweb36.infoseek.co.jp/computer/cocohome/thanks.html のようにしてください。CGIから見てどこにあるかを知らせるわけですから、必ず http:// から始まるURLを指定します。
<input ... や <textarea ... は、好きなように変えて構いません。type= の内容や name= の用語はお好みで決めてください。


先ほどの[送信]ボタンを押すと、どうなるでしょうか。下が私の元に届いたメールです。
題名: ココのアンケートへの返事だよ(練習1) 
日時: 01/10/05 20:21:06 東京 (標準時) 
From:    form@altoworld.com (Form Decode Service)
To:    cocochan@yahoo.co.jp
------------------------------------------------
[name] 関口 ココ
[mail] cocochan@yahoo.co.jp
[Doudesu] 非常に良かった!
[comment] 送信できるでしょうか
<input type="hidden">以外の結果がそのまま返ってきています。

「Alto World」さんのサービスではオプションとして、[入力した内容の確認画面を出す]、[入力必須項目を決める]ことができます(ありがたいですね)。その方法を下に書きます。

[入力した内容の確認画面を出す]
<input type="hidden" name="_confirm" value="on">
この一行を付け加えてください。

[入力必須項目を決める]
<input type=hidden name="_require" value="name,mail,Doudesu">
valueの値に<input>などで決めたname値を記入します。ここでは「名前」と「メールアドレス」、「感想の選択」を必須にしてみました。



それでは上のオプションを付けて見ます。
お名前を教えてください
(ハンドルネームでも結構です)
メールアドレスも教えて
Coco's Homeはいかがでしたか? 非常に良かった!  良かった!
どうでもいい!  最悪!!!
一言どうぞ!
 

見かけは変わりませんが、これで3項目を入力しないと送信することができなくなり、入力内容の確認画面が出て、送信が完了すると別のページに飛ばすことができるようになりました。

上はこのように書いてあります。ご自分のページで試してみませんか。
<form method="post" action="http://www.altoworld.com/form2/post.cgi">
<input type="hidden" name="_mailto" value="cocochan@yahoo.co.jp">
<input type="hidden" name="_confirm" value="on">
<input type=hidden name="_require" value="name,mail,Doudesu">
<input type=hidden name="_location" value="http://isweb36.infoseek.co.jp/computer/cocohome/thanks.html">
<input type="hidden" name="_subject" value="ココのアンケートへの返事だよ(練習2)">
<table border="1" bgcolor="#AADDAA">
<tr><td>お名前を教えてください</td><td><input type="tex"t name="name" size="30"><br>(ハンドルネームでも結構です)</td></tr>
<tr><td>メールアドレスも教えて</td><td><input type="text" name="mail" size="30"></td></tr>
<tr><td>Coco's Homeはいかがでしたか?</td>
<td><input type="radio" name="Doudesu" value="非常に良かった!">非常に良かった! 
<input type="radio" name="Doudesu" value="良かった!">良かった!<br>
<input type="radio" name="Doudesu" value="どうでもいい!" checked>どうでもいい! 
<input type="radio" name="Doudesu" value="最悪!!!">最悪!!!</td></tr>
<tr><td>一言どうぞ!</td><td><textarea name="comment" rows="5" cols="40" wrap="soft"></textarea></td></tr>
<tr><td> </td><td align="center"><input type="submit" value="送信"></td></tr>
</table>
</form>



ココのアンケートです」では上の説明以外に、頂いたメールに返信ができるようにしました。説明漏れでしたので追記します。(2001.10.25)
フォームデコードサービスから送られたメールに返信しようとすると、実際の送信人 Alto World さんになってしまいます。そのため送られたメールに書かれたメールアドレスをコピーして貼り付けなくてはなりません。しかし返信できるようにする機能がありましたので下に書いておきます。

[メールに返信できるようにする]
<input type="text" name="replyto" size="30">

このようにメールアドレスの name値を replyto にしてください。
先ほどのソースではメールアドレスの name値を mail にしていましたので、入力必須項目に指定されるときは name値 _require の value値も replytoにしてください。下は実際に送られてきたメールです。
題名: ココのアンケートです 
日時: 01/10/09 16:25:21 東京 (標準時) 
From:    form@altoworld.com (Form Decode Service)
Reply-to: cocochan@yahoo.co.jp
To:    cocochan@yahoo.co.jp
------------------------------------------------
[name] Coco Sekiguchi
[replyto] cocochan@yahoo.co.jp
[Doudesu] 非常に良かった!
[link] Yahoo Japan
[comment] 送信できるでしょうか

最後に「ココのアンケートです」のソースを書き加えておきます。
<table bor0der="0" width="650"><tr><td>
<p><font size="+1">こんにちはココです。<br>よろしければ私にご意見をいただけますか?</font></p>
<form method="post" action="http://www.altoworld.com/form2/post.cgi">
<input type="hidden" name="_mailto" value="cocochan@yahoo.co.jp">
<input type="hidden" name="_subject" value="ココのアンケートです">
<input type=hidden name="_require" value="name,replyto,Doudesu">
<input type=hidden name="_location" value="http://isweb36.infoseek.co.jp/computer/cocohome/thanks.html">
<table border="2" bgcolor="#EEEEEE">
<tr><td>お名前を教えてください</td><td><input type="text" name="name" size="30"><br>(ハンドルネームでも結構です)</td></tr>
<tr><td>メールアドレスも教えて</td><td><input type="text" name="replyto" size="30"></td></tr>
<tr><td>Coco's Homeはいかがでしたか?</td>
<td><input type="radio" name="Doudesu" value="非常に良かった!">非常に良かった! 
<input type="radio" name="Doudesu" value="良かった!">良かった!<br>
<input type="radio" name="Doudesu" value="どうでもいい!" checked>どうでもいい! 
<input type="radio" name="Doudesu" value="最悪!!!">最悪!!!</td></tr>
<tr><td>どちらのサイトから<br>いらっしゃいましたか?</td><td><input type="text" name="link" size="30"></td></tr>
<tr><td>一言どうぞ!</td><td><textarea name="comment" rows="5" cols="40" wrap="soft"></textarea></td></tr>
<tr><td> </td><td align="center"><input type="submit" value="送信"></td></tr>
</table>
</form>
<p>確認画面は出ません。ありがとう画面になったら送信は完了です。</p>
赤字は変更せずに、青字はご自分にあわせてください。

| Back | Coco's Home | ココと Perl で遊びませんか |

Copyright 2001-2002 Coco's Home. All rights reserved.

[PR]lCItP悦舗可:tP民拱涓yI