ホームページからメールを送ろう
[ 戻る ]

ホームページを自分で作り始めると、下記のようなフォームを使ってメールを送ってみたくなりますね。 このページでは、その方法を解説します。
(HTMLを使ったフォームの使い方が分かることを前提とさせてもらいます)
1.入力ページの表示例

宛先:

題名:

メッセージ:





2.上記ページは下記のようなHTMLから出来てます

<FORM method="POST" action="/~info/cgimail.cgi">
宛先:<input type="text" name="sendto" size="30">
<BR><BR>
題名:<input type="text" name="subject" size="30">
<BR><BR>
メッセージ:<BR>
<textarea name="message" rows=8 cols=50></textarea>
<BR><BR>
<CENTER>
<input type=submit value="送信">
</CENTER>
</FORM>



3.上記HTMLの解説
(1).フォーム機能は、<FORM>から始まり</FORM>で終わります。 そして、先頭の<FORM>タグの中の赤表示の部分 "/~info/cgimail.cgi" が、このフォームの中に入力された、宛先、題名、メッセージをメールで送ってくれるCGIのファイル名です。 当社アカントが p0001 の人が自分のディレクトリの中に cgimail.cgi というCGIファイルを置いた場合、"/~p0001/cgimail.cgi" と書いて下さい。

(2).宛先に入力された内容は sendto という変数に入いり、題名は subject、メッセージは message という変数に入ります。

(3).一番下の送信ボタンが押されると、(2)の変数の内容が、(1)で指定されたCGIに伝わるのです。


4.CGIファイルの作成 (cgimail.cgi)

ここで一番大切なCGIのファイルを作ってみましょう。
(注意) このCGIファイルは、みなさんが自分のディレクトリに作成して下さい。間違っても、"/~info/cgimail.cgi" を使おうなんて考えてはいけません。
cgimail.cgi の中身
#! /usr/bin/perl
require '/home/cgi-bin/jcode.pl';
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
@pairs=split(/&/,$buffer);
foreach $pair(@pairs)
{
    ($name,$value)=split(/=/,$pair);
    $value=~tr/+/ /;
    $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
    $FORM{$name}=$value;
}
open(MAIL,"| /usr/bin/mail -s $FORM{'subject'} $FORM{'sendto'}") || die "Can't send mail!\n";
print MAIL $FORM{'message'};
close(MAIL);

print "Content-Type: text/html\n\n";
print "
<HTML><HEAD><TITLE>ありがとう</TITLE></HEAD><BODY>
<H1>メールのご利用ありがとうございます!</H1>
<BR><BR>
<A HREF=\"http://www.dreams.ne.jp/\"> ここ </A> をクリックして戻って下さい
</BODY></HTML>
";
上記の中で、下部の print 命令の下にある赤い文字の部分が、CGIがメールを送り終わった後に表示するページを記述した部分です。 このままでは、猿島インターネットのトップページに戻りますので、適当に修正して下さい。


4.CGIファイルのパーミッションの設定

CGIファイルを自分のパソコンで編集したら、それをサーバにFTP転送して下さい。そして、CGIのパーミッションを700に変更して下さい。FTPソフトでパーミッションの変更が出来ない場合には、Windows95 などなら、DOSプロンプトから telnet を使って下さい。
パーミッション変更手順
赤文字が実際に入力する部分。

・MS-DOS プロンプトから
> telnet w3.dreams.ne.jp と入力して、エンターキーを押す。

・telnet のウィンドウが表示される。

login:p0001 自分のアカントを入力してエンターキーを押す。

password: 自分のパスワードを入力してエンターキーを押す。
(パスワードを入力しても画面には表示されない)

画面に Welcome Dreams Server と表示されたら、

% chmod 700 cgimail.cgi と入力してエンターキーを押す。
これで、cgimail.cgi ファイルのパーミッションが変更される。

% ls -la cgimail.cgi と入力してエンターキーを押し、
-rwx------  1 info  user  0 Sep 1 16:11 cgimail.cgi
のように表示されることを確認する。
(上記の一番左側の -rwx------ の部分が同じように表示されていればOK) 

% exit と入力してエンターキーを押し telnet を終了。



以上です。 うまくいかないときは御相談下さい。

猿島インターネット技術担当:info@dreams.ne.jp


Presented by 猿島インターネットサービス info@dreams.ne.jp