#!/usr/local/bin/perl
require '../jcode.pl';
##    以上はシステム環境に合わせて変更
## -------------------------------------------------------------------
$CGINAME = 'みのボックス Ver1.0';						# 2000/07/23
$MKNAME  = 'フリーＣＧＩみの';
$MKURL   = 'http://www.mino.net/cgi/';
## -------------------------------------------------------------------
## このスクリプトはフリーソフトです。このスクリプトを使用したいかなる
## 損害も作者はその責を負いません。
## このスクリプトに関する、ご質問、ご要望は、http://www.mino.net/cgi/ へ
## -------------------------------------------------------------------
## --- 基本設定 任意に修正 [*]項目は任意 省略する場合""
## -------------------------------------------------------------------
$CGIFILE  = './formmail.cgi';				# このファイル
$MGRPASS  = 'n-portal';						# 管理パスワード（８文字以内）
$DATFILE  = '../../data/formmail/boxlist.dat';					# データファイル
$LCKFILE  = '../../data/formmail/boxlist.loc';					# ロックファイル
$MGR_MAIL = 'hasegawa@senseofwonder.org';				# 管理者メールアドレス
$MAILCMD  = '/usr/sbin/sendmail -t';		# メール送信コマンド
$MAILCHK  = 'ON';							# メールチェック有／無
$BACK_GIF = '../../images/space.jpg';								# 背景画像[*]
$BACK_COL = '#000000';						# 背景色
$BACK_URL = '../../';					# 戻るＵＲＬ
$TEXT_COL = '#ffffff';						# テキスト色
#$DEMOFLG  = 'ON';							# デモフラグ
## --- 基本設定 終了
## -------------------------------------------------------------------
## 引数を取得・解釈
## -------------------------------------------------------------------
if ($ENV{'REQUEST_METHOD'} eq "POST") {
	read(STDIN, $form, $ENV{'CONTENT_LENGTH'});
} else { 
	$form = $ENV{'QUERY_STRING'}; 
}
@para = split(/&/,$form);
foreach $pair (@para) {
	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$value =~ s/</＜/g;						#　HTMLタグ禁止
	$value =~ s/>/＞/g;						#　HTMLタグ禁止
	&jcode'convert(*value, 'sjis');
	$FORM{$name} = $value;
}
$ID   = $FORM{'Id'};
$ACT  = $FORM{'Act'};
$MODE = $FORM{'Mode'};
$NAME = $FORM{'Name'};
$MAIL = $FORM{'Mail'};
$SUBJ = $FORM{'Subject'};
$CMT  = $FORM{'Comment'};
$PASS = $FORM{'Pass'};
$OID  = $FORM{'Oid'};
$TO_NAME = $FORM{'To_Name'};
$TO_MAIL = $FORM{'To_Mail'};
$TITLE = $FORM{'Title'};
$MSG = "";
$END_FLG = 'OFF';
## -------------------------------------------------------------------
## 処理別に分ける
## -------------------------------------------------------------------
&HtmlStart;
if ($PASS ne '' && $PASS eq $MGRPASS ) {
	if ($ACT eq ''){ &DispMgr; }
	elsif ($ACT eq '登録'){ &InputList; }
	elsif ($ACT eq '変更'){ &InputList; }
	elsif ($ACT eq '削除'){ $MODE = $ACT; &ConfList; }
	elsif ($ACT eq '実行'){ &ConfList; }
	elsif ($ACT eq 'ＯＫ'){ &ConfList; }
	else { $MSG = '現在その機能は使えません。あしからず。'; }
}
elsif ($ACT eq ''){ &InputComment; }
elsif ($ACT eq '送信') { &ConfComment; }
elsif ($ACT eq 'ＯＫ') { &SendComment; }
else { $MSG = '現在その機能は使えません。あしからず。'; }
&HtmlEnd;
exit;

## -------------------------------------------------------------------
## 内容入力サブルーチン
## -------------------------------------------------------------------
sub InputComment {
	if ( &CheckID == 0 ) {
		print "<script language=\"JavaScript\">\n";
		print "<!---\n";
		print "window.open(\"\",\"_self\",\"location=0,directories=0,status=1,scrollbars=1,menubar=0,toolbar=0,resizable=1\");\n";
		print "// -->\n";
		print "</script>\n";
		$END_FLG = 'ON';
		print "<IMG SRC=\"../lime/lime.cgi?page=230&name=cgi-bin/formmail/formmail.cgi\">\n";
		print "<br><br><font size=+1><u><b>$TO_NAME宛の$TITLEを受け付けします。</b></u></font><br><br>\n";
		print "貴方のお名前、メールアドレス、題名、内容を入力の上、送信ボタンをクリックして下さい。<br>\n";
		print "<font color=\"#FF0000\">絶対に半角カタカナは使わないで下さい。</font><br><br>\n";
		print "<form method=\"POST\" action=\"$CGIFILE\">\n";
		print "<input type=\"hidden\" name=\"Id\" value=\"$ID\">\n";
		print "<table border=2>\n";
		print "<tr><td>お名前</td><td>\n";
		print "<input type=\"text\" name=\"Name\" size=40 maxlength=40 value=\"\">\n";
		print "</td></tr><tr><td>メールアドレス</td><td>\n";
		print "<input type=\"text\" name=\"Mail\" size=40 maxlength=64 value=\"\">\n";
		print "</td></tr><tr><td>題名</td><td>\n";
		print "<input type=\"text\" name=\"Subject\" size=40 maxlength=64 value=\"\">\n";
		print "</td></tr><tr><td colspan=2 align=center>内容\n";
		print "</td></tr><tr><td colspan=2>\n";
		print "<textarea name=\"Comment\" rows=10 cols=60 wrap=\"off\"></textarea>\n";
		print "</td></tr>\n";
		print "</table><br><input type=\"submit\" name=\"Act\" value=\"送信\">\n";
		print "<font size=-1>JavaScriptを有効にして下さい。</font></form>\n";
	}
	if ( $ID eq '' ) {
		$MSG = '';
		if ( &lockon == 0 ) {
			$MSG = '大変混み合っております。しばらく待ってから再度アクセスして下さい。';
			return;
		}
		if ( open( FD,$DATFILE ) ) {
			@LIST = <FD>;
			close( FD );
		}
		&lockoff;
		@LIST = sort( @LIST );
		print "<A HREF=\"../../\" border=\"0\"><img src=\"../../images/earth.jpg\" width=\"160\" height=\"160\" border=\"0\"></A>\n";
		print "<br><br><font size=+1><u><b>宛先一覧</b></u></font><br><br>\n";
		print "メッセージを送信する場合、対象ＩＤをクリックして下さい。<br>\n";
		print "<table border=2><td>ＩＤ</td><td>名前</td><td>件名</td></tr>\n";
		foreach $line ( @LIST ) {
			chop $line;
			( $id,$mail,$name,$title ) = split( /,/,$line );
			print "<tr><td><a href=\"$CGIFILE?Id=$id\" target=\"_balnk\"><FONT COLOR=\"#FFFFFF\">$id</FONT></a></td><td>$name</td><td>$title</td></tr>\n";
		}
		print "</table></form>\n";
		print "<br><form method=\"POST\" action=\"$CGIFILE\">\n";
		print "<input type=\"submit\" value=\"管理\">\n";
		print "<input type=\"password\" name=\"Pass\" size=8 maxlength=8 value=\"\">\n";
		print "<input type=\"button\" onClick=\"location.href=\'$BACK_URL\'\" value=\"戻る\"></form>\n";
	}
	return;
}
## -------------------------------------------------------------------
## 内容確認サブルーチン
## -------------------------------------------------------------------
sub ConfComment {
	$END_FLG = 'ON';
	if ( &CheckID != 0 ) { return; }
	# 入力内容チェック
	if ($NAME eq '') {$MSG = 'お名前が入力されていません。';return;}
	if ($MAILCHK eq 'ON' && $MAIL eq '' ) {
		$MSG = 'メールアドレスが入力されていません。';
		return;
	}
	if ($MAIL ne '') {
		if ($MAIL !~ /^[\.!#%&\-_0-9a-z]+\@[!#%&\-_0-9a-z]+(\.[!#%&\-_0-9a-z]+)+$/i)
		{
			$MSG = 'メールアドレスのフォーマットが正しくありません。';
			return;
		}
	}
	if ($SUBJ eq '') {$MSG = '題名が入力されていません。';return;}
	if ($CMT eq '') {$MSG = '内容が入力されていません。';return;}
	if ($CMT =~ /^\./ ) {$MSG = '内容に.を入れることは出来ません。';return;}
	# 入力内容表示
	print "<br><br><font size=+1><u><b>$TO_NAME宛の$TITLEを送信します。</b></u></font><br><br>\n";
	print "<form method=\"POST\" action=\"$CGIFILE\">\n";
	print "<input type=\"hidden\" name=\"Id\" value=\"$ID\">\n";
	print "<input type=\"hidden\" name=\"Name\" value=\"$NAME\">\n";
	print "<input type=\"hidden\" name=\"Mail\" value=\"$MAIL\">\n";
	print "<input type=\"hidden\" name=\"Subject\" value=\"$SUBJ\">\n";
	print "<input type=\"hidden\" name=\"Comment\" value=\"$CMT\">\n";
	print "<table border=2>\n";
	print "<tr><td>お名前　　　　：$NAME</td></tr>\n";
	print "<tr><td>メールアドレス：$MAIL</td></tr>\n";
	print "<tr><td>題名　　　　　：$SUBJ</td></tr>\n";
	print "<tr><td><pre>$CMT</pre></td></tr>\n";
	print "</table>以上の通りです。よろしいですか？ \n";
	print "<input type=\"submit\" name=\"Act\" value=\"ＯＫ\">\n";
	print "<input type=\"button\" onClick=\"history.back()\" value=\"やり直し\"></form>\n";
	return;
}
## -------------------------------------------------------------------
## 内容送信サブルーチン
## -------------------------------------------------------------------
sub SendComment {
	$END_FLG = 'ON';
	if ( &CheckID != 0 ) { return; }
	# 入力内容チェック
	if ($NAME eq '') {$MSG = 'お名前が入力されていません。';return;}
	if ($MAILCHK eq 'ON' && $MAIL eq '' ) {
		$MSG = 'メールアドレスが入力されていません。';
		return;
	}
	if ($MAIL ne '') {
		if ($MAIL !~ /^[\.!#%&\-_0-9a-z]+\@[!#%&\-_0-9a-z]+(\.[!#%&\-_0-9a-z]+)+$/i)
		{
			$MSG = 'メールアドレスのフォーマットが正しくありません。';
			return;
		}
	}
	if ($SUBJ eq '') {$MSG = '題名が入力されていません。';return;}
	if ($CMT eq '') {$MSG = '内容が入力されていません。';return;}
	&MailSend;
	return;
}
## -------------------------------------------------------------------
## ＩＤチェックサブルーチン
## -------------------------------------------------------------------
sub CheckID {
	if ( $ID eq '' ) {
		$MSG = "呼び出し方法に誤りがあります。<a href=\"mailto:$MGR_MAIL\">管理者</a>にお問い合わせ下さい。";
		return 1;
	}
	if ( &lockon == 0 ) {
		$MSG = '大変混み合っております。しばらく待ってから再度アクセスして下さい。';
		return 9;
	}
	if ( open( FD,$DATFILE ) ) {
		@LIST = <FD>;
		close( FD );
	}
	&lockoff;
	@LIST = sort( @LIST );
	$TO_MAIL = '';
	foreach $line ( @LIST ) {
		chop $line;
		( $id,$mail,$name,$title ) = split( /,/,$line );
		if ( $id eq $ID ) {
			$TO_MAIL = $mail;
			$TO_NAME = $name;
			$TITLE = $title;
			last;
		}
	}
	if ( $TO_MAIL eq '' ) {
		$MSG = "宛先情報が存在しません。<a href=\"mailto:$MGR_MAIL\">管理者</a>にお問い合わせ下さい。";
		return 9;
	}
	return 0;
}
## -------------------------------------------------------------------
## 管理画面サブルーチン
## -------------------------------------------------------------------
sub DispMgr {
	if ( &lockon == 0 ) {
		$MSG = '大変混み合っております。しばらく待ってから再度アクセスして下さい。';
		return;
	}
	if ( open( FD,$DATFILE ) ) {
		@LIST = <FD>;
		close( FD );
	}
	&lockoff;
	@LIST = sort( @LIST );
	print "<br><br><font size=+1><u><b>宛先情報を管理します。</b></u></font><br><br>\n";
	print "変更、削除を行う場合、対象ＩＤをチェックしてから。<br>\n";
	print "名前をクリックするとテスト出来ます。<br>\n";
	print "<form method=\"POST\" action=\"$CGIFILE\">\n";
	print "<input type=\"hidden\" name=\"Pass\" value=\"$PASS\">\n";
	print "<input type=\"submit\" name=\"Act\" value=\"登録\">\n";
	print "<input type=\"submit\" name=\"Act\" value=\"変更\">\n";
	print "<input type=\"submit\" name=\"Act\" value=\"削除\"><br>\n";
	print "<table border=2><td>ＩＤ</td><td>名前</td><td>メールアドレス</td><td>件名</td></tr>\n";
	$cnt = 0;
	foreach $line ( @LIST ) {
		chop $line;
		( $id,$mail,$name,$title ) = split( /,/,$line );
		if ( $cnt == 0 ) {
			print "<tr><td><input type=\"radio\" name=\"Id\" value=\"$id\" checked>$id</td>\n";
			$cnt = 1;
		} else {
			print "<tr><td><input type=\"radio\" name=\"Id\" value=\"$id\">$id</td>\n";
		}
		print "<td><a href=\"$CGIFILE?Id=$id\" target=\"_blank\">$name</a></td><td>$mail</td><td>$title</td></tr>\n";
	}
	print "</table></form>\n";
	print "<form method=\"POST\" action=\"$CGIFILE\">\n";
	print "<input type=\"button\" onClick=\"location.href=\'$CGIFILE\'\" value=\"戻る\"></form>\n";
	return;
}
## -------------------------------------------------------------------
## 登録、変更入力サブルーチン
## -------------------------------------------------------------------
sub InputList {
	$OID = $ID;
	$TO_MAIL = '';
	$TO_NAME = '';
	$TITLE = '';
	if ( $ACT eq '変更' ) {
		if ( $ID eq '' ) {
			$MSG = '変更対象のＩＤにチェックを付けて下さい。';
			return;
		}
		if ( &CheckID != 0 ) { return; }
	} else { $OID = ''; $ID = ''; }
	print "<br><br><font size=+1><u><b>宛先情報を$ACTします。</b></u></font><br><br>\n";
	print "<form method=\"POST\" action=\"$CGIFILE\">\n";
	print "<input type=\"hidden\" name=\"Pass\" value=\"$PASS\">\n";
	print "<input type=\"hidden\" name=\"Mode\" value=\"$ACT\">\n";
	print "<input type=\"hidden\" name=\"Oid\" value=\"$OID\">\n";
	print "<table border=2>\n";
	print "<tr><td>ＩＤ</td><td>\n";
	print "<input type=\"text\" name=\"Id\" size=8 maxlength=8 value=\"$ID\">\n";
	print "任意の半角英数字、最大８文字</td></tr><tr><td>お名前</td><td>\n";
	print "<input type=\"text\" name=\"To_Name\" size=40 maxlength=40 value=\"$TO_NAME\">\n";
	print "</td></tr><tr><td>メールアドレス</td><td>\n";
	print "<input type=\"text\" name=\"To_Mail\" size=40 maxlength=64 value=\"$TO_MAIL\">\n";
	print "</td></tr><tr><td>件名</td><td>\n";
	print "<input type=\"text\" name=\"Title\" size=40 maxlength=64 value=\"$TITLE\">\n";
	print "</td></tr>\n";
	print "</table><br><input type=\"submit\" name=\"Act\" value=\"実行\">\n";
	print "<input type=\"button\" onClick=\"history.back()\" value=\"戻る\"></form>\n";
	return;
}
## -------------------------------------------------------------------
## 更新確認入力サブルーチン
## -------------------------------------------------------------------
sub ConfList {
	if ( $MODE ne '変更' ) { $OID = $ID; }
	if ( $OID eq '' || $ID eq '' ) { $MSG = 'ＩＤが入力されていません。'; return; }
	if ( $OID =~ /,/ || $ID =~ /,/ ) {$MSG = 'ＩＤに,を入れることは出来ません。';return;}
	if ( $MODE ne '削除' ) {
		if ( $TO_MAIL eq '' ) { $MSG = 'メールアドレスが入力されていません。'; return; }
		if ( $TO_MAIL !~ /^[\.!#%&\-_0-9a-z]+\@[!#%&\-_0-9a-z]+(\.[!#%&\-_0-9a-z]+)+$/i) {
			$MSG = 'メールアドレスのフォーマットが正しくありません。';
			return;
		}
		if ( $TO_NAME eq '' ) { $MSG = '名前が入力されていません。'; return; }
		if ( $TO_NAME eq '' ) { $MSG = '名前が入力されていません。'; return; }
		if ( $TO_NAME =~ /,/ ) {$MSG = '名前に,を入れることは出来ません。';return;}
		if ( $TITLE eq '' ) { $MSG = '件名が入力されていません。'; return; }
		if ( $TITLE =~ /,/ ) {$MSG = '件名に,を入れることは出来ません。';return;}
		if ( &lockon == 0 ) {
			$MSG = '大変混み合っております。しばらく待ってから再度アクセスして下さい。';
			return;
		}
	} else { &CheckID; }
	@OUTLIST = ();
	$FLG1 = 0; $FLG2 = 0;
	if ( open( FD,$DATFILE ) ) {
		while ( <FD> ) {
			chop $_;
			( $id,$mail,$name,$title ) = split( /,/,$_ );
			if ( $id eq $OID ) { $FLG1 = 1; }
			else { push( @OUTLIST,$_ ); }
			if ( $id eq $ID ) { $FLG2 = 1; }
		}
		close( FD );
	}
	if ( $MODE eq '登録' && $FLG1 == 1 ) {
		close( FD );
		&lockoff;
		$MSG = '既に宛先情報が存在します。';
		return;
	}
	if ( ($MODE eq '変更' || $MODE eq '削除') && $FLG1 == 0 ) {
		close( FD );
		&lockoff;
		$MSG = '宛先情報が存在しません。';
		return;
	}
	if ( $MODE eq '変更' && $ID ne $OID && $FLG2 == 1 ) {
		close( FD );
		&lockoff;
		$MSG = '既に宛先情報が存在します。';
		return;
	}
	if ( $ACT eq 'ＯＫ' ) {
		if ( $MODE ne '削除' ) { push( @OUTLIST,"$ID,$TO_MAIL,$TO_NAME,$TITLE" ); }
		if ( open( OUT,">$DATFILE" ) ) {
			@OUTLIST = sort( @OUTLIST );
			foreach $line ( @OUTLIST ) { print OUT "$line\n"; }
			close( OUT );
			&lockoff;
			print "<br><br><font size=+1><u><b>$MODE完了しました。</b></u></font><br><br>\n";
			print "<form method=\"POST\" action=\"$CGIFILE\">\n";
			print "<input type=\"hidden\" name=\"Pass\" value=\"$PASS\">\n";
			print "<input type=\"submit\" value=\"戻る\"></form>\n";
		} else {
			&lockoff;
			$MSG = '$DATFILEへの書き込みに失敗しました。';
		}
	} else {
		&lockoff;
		print "<br><br><font size=+1><u><b>以下の通り$MODEします。</b></u></font><br><br>\n";
		print "<form method=\"POST\" action=\"$CGIFILE\">\n";
		print "<input type=\"hidden\" name=\"Pass\" value=\"$PASS\">\n";
		print "<input type=\"hidden\" name=\"Mode\" value=\"$MODE\">\n";
		print "<input type=\"hidden\" name=\"Oid\" value=\"$OID\">\n";
		print "<input type=\"hidden\" name=\"Id\" value=\"$ID\">\n";
		print "<input type=\"hidden\" name=\"To_Mail\" value=\"$TO_MAIL\">\n";
		print "<input type=\"hidden\" name=\"To_Name\" value=\"$TO_NAME\">\n";
		print "<input type=\"hidden\" name=\"Title\" value=\"$TITLE\">\n";
		print "<table border=2>\n";
		print "<tr><td>ＩＤ</td><td>$ID</td></tr>\n";
		print "<tr><td>お名前</td><td>$TO_NAME</td></tr>\n";
		print "<tr><td>メールアドレス</td><td>$TO_MAIL</td></tr>\n";
		print "</tr><tr><td>件名</td><td>$TITLE</td></tr>\n";
		print "</table>以上の通りです。よろしいですか？ \n";
		print "<input type=\"submit\" name=\"Act\" value=\"ＯＫ\">\n";
		print "<input type=\"button\" onClick=\"history.back()\" value=\"やり直し\"></form>\n";
	}
	return;
}
## -------------------------------------------------------------------
## ロック処理サブルーチン
## -------------------------------------------------------------------
sub lockon {
	$LCKKEY = 0;
	foreach (1 .. 5) {
		unless (-e "$LCKFILE") {
			open(LOCK,">$LCKFILE");
			close(LOCK);
			$LCKKEY = 9;
			last;
		} else { sleep(1); }
	}
	return $LCKKEY;
}
## -------------------------------------------------------------------
## アンロック処理サブルーチン
## -------------------------------------------------------------------
sub lockoff {
	if ($LCKKEY == 9) { unlink("$LCKFILE"); }
}
## -------------------------------------------------------------------
## HTMLヘッダー表示
## -------------------------------------------------------------------
sub HtmlStart {
	print "Content-type: text/html\n\n";
	print "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;charset=Shift_JIS\">\n";
	print "<html><head><title>$CGINAME</title></head>\n";
	if ( $BACK_GIF ne '' ) { print "<body background=\"$BACK_GIF\" text=\"$TEXT_COL\">\n"; }
	else { print "<body bgcolor=\"$BACK_COL\" text=\"$TEXT_COL\">\n"; }
	return;
}
## -------------------------------------------------------------------
## HTMLフッター表示
## -------------------------------------------------------------------
sub HtmlEnd {
	print "<form method=\"POST\" action=\"$CGIFILE\">\n";
	if ( $MSG ne "" ) {
		print "<br><br><h3><font color=\"#ff0000\">$MSG</font></h3>\n";
		print "<input type=\"button\" onClick=\"history.back()\" value=\"戻る\">\n";
	}
	if ( $END_FLG eq 'ON' ) { print "<input type=\"button\" onClick=\"window.close()\" value=\"終了\"><BR>\n"; }
	print "<i><a href=\"$MKURL\" target=\"_blank\"><FONT COLOR=\"#FFFFFF\">Present by $MKNAME</FONT></a></i>\n";
	print "</form>\n";
	print "<A HREF=\"../../\" border=\"0\"><img src=\"../../images/comet.jpg\" width=\"160\" height=\"114\" align=\"right\" border=\"0\"></A>\n";
	print "</body></html>\n";
	exit;
}
## -------------------------------------------------------------------
## メール送信
## -------------------------------------------------------------------
sub MailSend {

	if (index($TO_MAIL, '@aol.com') > 0) {
		return;
	}
	if (index($MGR_MAIL, '@aol.com') > 0) {
		return;
	}
	if (index($CMT, '@aol.com') > 0) {
		return;
	}
	if (index($CMT, 'multi-part') > 0) {
		return;
	}

	$SUBJECT = &Base64Encode( $TITLE );
	if ( $MAIL eq '' ) { $MAIL = $MGR_MAIL; }
	$mail_mess = <<EndOfMail;
From: $MAIL
To : $TO_MAIL
Bcc: $MGR_MAIL
Subject: $SUBJECT
Errors-To: $MGR_MAIL
X-WebSite: $MKURL
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-2022-JP"
X-Mailer: $CGINAME


$TO_NAME宛の$TITLEを受け取りましたので送付致します。

名          前：$NAME
メールアドレス：$MAIL
題          名：$SUBJ
内          容：
--------------------------------------------------------------
$CMT
--------------------------------------------------------------
REMOTE_ADDR    : $ENV{'REMOTE_ADDR'}
REMOTE_HOST    : $ENV{'REMOTE_HOST'}
HTTP_USER_AGENT: $ENV{'HTTP_USER_AGENT'}
	Present by $MKNAME $MKURL
--------------------------------------------------------------
以上です。
EndOfMail
	if ( $DEMOFLG ne 'ON' ) {
		&jcode'convert(*mail_mess,'jis');
		if( open( SENDMAIL, "| $MAILCMD" )){
			print SENDMAIL $mail_mess;
			close (SENDMAIL);
			$MSG = 'ありがとうございました。';
		} else {
			$MSG = "送信に失敗しました。<a href=\"mailto:$MGR_MAIL\">管理者</a>までお問い合わせ下さい。";
		}
	} else {
		&jcode'convert(*mail_mess,'sjis');
		print "<pre>-----------------------------------------------------------\n";
		print "$TO_NAME宛の$TITLEを受け取りましたので送付致します。\n\n";
		print "名          前：$NAME\n";
		print "メールアドレス：$MAIL\n";
		print "題          名：$SUBJ\n";
		print "内          容：\n";
		print "--------------------------------------------------------------\n";
		print "$CMT\n";
		print "--------------------------------------------------------------\n";
		print "</pre>\n";
		$MSG = 'サンプルのため、メールは送信しません。';
	}
	print "<script language=\"JavaScript\">\n";
	print "<!---\n";
	print "alert(\"$MSG\");\n";
	print "window.close();\n";
	print "// -->\n";
	print "</script>\n";
	return;
}
## -------------------------------------------------------------------
## Base64エンコード
## -------------------------------------------------------------------
sub Base64Encode {
	local($target) = @_;
	local($base) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
					. "abcdefghijklmnopqrstuvwxyz"
					. "0123456789+/";
	local($xx, $yy,$zz, $i);
	&jcode'convert(*target, "jis");
	$xx = unpack("B*", $target);
	for ($i = 0; $yy = substr($xx, $i, 6); $i += 6) {
		$zz .= substr($base, ord(pack("B*", "00" . $yy)), 1);
		if (length($yy) == 2) { $zz .= "=="; }
		elsif (length($yy) == 4) { $zz .= "="; }
	}
	return("=?iso-2022-jp?B?$zz?=");
}
