#!/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タグ禁止 &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"; print "\n"; print "\n"; print "
お名前\n"; print "\n"; print "
メールアドレス\n"; print "\n"; print "
題名\n"; print "\n"; print "
内容\n"; print "
\n"; print "\n"; print "

\n"; print "JavaScriptを有効にして下さい。
\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"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
お名前    :$NAME
メールアドレス:$MAIL
題名     :$SUBJ
$CMT
以上の通りです。よろしいですか? \n"; print "\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"; if ( $MSG ne "" ) { print "

$MSG

\n"; print "\n"; } print "\n"; print "$MKNAME\n"; 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?="); }