#!/usr/local/bin/perl
require './jcode.pl';
## 以上はシステム環境に合わせて変更
## -------------------------------------------------------------------
$MKNAME = 'MINO Mail Ver.1.0';
$MKURL = 'http://www.m-hokko.com/';
## -------------------------------------------------------------------
## このスクリプトはフリーソフトです。このスクリプトを使用したいかなる
## 損害も作者はその責を負いません。
## このスクリプトに関する、ご質問、ご要望は、http://www.mino.net/cgi/ へ
## -------------------------------------------------------------------
## --- 基本設定 任意に修正 [*]項目は任意 省略する場合""
## -------------------------------------------------------------------
$CGIFILE = './minomail.cgi'; # このファイル
$TITLE = '潟}シナリーホッコーです'; # タイトル
$TO_MAIL = 'm-hokko@m-hokko.com'; # 送信メールアドレス
$MAILCMD = '/usr/sbin/sendmail -t'; # メール送信コマンド
$MAILCHK = 'ON'; # メールチェック有/無
$BACK_GIF = ''; # 背景画像[*]
$BACK_COL = '#ffffff'; # 背景色
$TEXT_COL = '#660000'; # テキスト色
## --- 基本設定 終了
## -------------------------------------------------------------------
## 引数を取得・解釈
## -------------------------------------------------------------------
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;
}
$ACT = $FORM{'Act'};
$NAME = $FORM{'Name'};
$MAIL = $FORM{'Mail'};
$SUBJ = $FORM{'Subject'};
$CMT = $FORM{'Comment'};
$MSG = "";
## -------------------------------------------------------------------
## 処理別に分ける
## -------------------------------------------------------------------
&HtmlStart;
if ($ACT eq ''){ &InputComment; }
elsif ($ACT eq '送信') { &ConfComment; }
elsif ($ACT eq 'OK') { &SendComment; }
else { $MSG = '現在その機能は使えません。あしからず。'; }
&HtmlEnd;
exit;
## -------------------------------------------------------------------
## 内容入力サブルーチン
## -------------------------------------------------------------------
sub InputComment {
print "
$TITLE宜しくお願いします。
\n";
print "貴方のお名前、メールアドレス、題名、内容を入力の上、送信ボタンをクリックして下さい。
\n";
print "文字化けしますので半角カタカナは使わないで下さい。
\n";
print "
\n";
return;
}
## -------------------------------------------------------------------
## 内容確認サブルーチン
## -------------------------------------------------------------------
sub ConfComment {
# 入力内容チェック
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 "
以下の$TITLEを送信します。
\n";
print "\n";
}
## -------------------------------------------------------------------
## 内容送信サブルーチン
## -------------------------------------------------------------------
sub SendComment {
# 入力内容チェック
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;
}
## -------------------------------------------------------------------
## HTMLヘッダー表示
## -------------------------------------------------------------------
sub HtmlStart {
print "Content-type: text/html\n\n";
print "\n";
print "$TITLE\n";
if ( $BACK_GIF ne '' ) { print "\n"; }
else { print "\n"; }
print "\n";
return;
}
## -------------------------------------------------------------------
## HTMLフッター表示
## -------------------------------------------------------------------
sub HtmlEnd {
print "\n";
exit;
}
## -------------------------------------------------------------------
## メール送信
## -------------------------------------------------------------------
sub MailSend {
$SUBJECT = &Base64Encode( $TITLE );
if ( $MAIL eq '' ) { $MAIL = $TO_MAIL; }
$mail_mess = <\n";
print "\n";
print "\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?=");
}