#! /usr/bin/perl
#
# メール送信CGI
# Scripting by murayama@chichibu.co.jp
require 'jcode.pl';
############
# 変数設定 #
############
$request_method = $ENV{"REQUEST_METHOD"}; #リクエストメソッド
$sendmail = '/usr/sbin/sendmail'; #sendmailのパス
$mailto = 'info@asaumi.com'; #メール送信先
#$mailto = 'murayama@i-surf.co.jp'; #メール送信先
$bcc = 'order@i-surf.co.jp';
$subject = '[お問い合わせ]'; #サブジェクト
##########################
# 入力メソッドによる選択 #
##########################
sub readData
{
local(*queryString) = @_ if @_;
if ($request_method eq "GET") {&readGetData(*queryString);}
if ($request_method eq "POST") {&readPostData(*queryString);}
return 1;
}
###########################
# method=GET の場合の処理 #
###########################
sub readGetData
{
local(*queryString) = @_ if @_;
$queryString = $ENV{"QUERY_STRING"};
#if ($queryString eq "") { &error('Error','Data is Empty?'); }
return 1;
}
############################
# method=POST の場合の処理 #
############################
sub readPostData
{
local(*queryString) = @_ if @_;
local($contentLength);
# 環境変数の読みこみ
$contentLength = $ENV{"CONTENT_LENGTH"};
if ($contentLength)
{
read(STDIN,$queryString,$contentLength);
}
return 1;
}
########################
# フォームデータの分割 #
########################
sub parseData
{
local(*queryString) = @_ if @_;
local($key,$value,$curString,@tmpArray,$aName);
# 文字列の分割
@tmpArray = split(/&/,$queryString);
# 文字列が無くなるまでループ
foreach $curString (@tmpArray)
{
($key,$value) = split(/=/,$curString);
if ($key ne 'start') {
$key2 = $key;
$value2 = $value;
$FORM2{$key} = $value;
}
&decodeData(*key);
&decodeData(*value);
$FORM{$key} = $value;
}
return 1;
}
############################
# フォームデータのデコード #
############################
sub decodeData
{
local(*queryString) = @_ if @_;
# 変換
$queryString =~ s/\+/ /g;
$queryString =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("c",hex($1))/ge;
if ($queryString =~ /\r\n/) { $queryString =~ s/\r\n/\n/g; }
if ($queryString =~ /\n/) { $queryString =~ s/\n/\r/g; }
&jcode'convert(*value,'sjis');
return 1;
}
##############
# エラー処理 #
##############
sub error
{
print <<"EOT";
$_[0]
$_[1]
もう一度ご確認の上、入力しなおしてください。
ブラウザの[戻る]ボタンを押して前の画面に移動してください.
EOT
&html_foot;
exit;
} # sub error end
################
# 入力チェック #
################
sub check {
if (!$FORM{'name'}) { &error('Error.','お名前が入力されていません。') }
elsif (!$FORM{'ruby'}) { &error('Error.','フリガナが入力されていません。') }
elsif (!$FORM{'email'}) { &error('Error.','メールアドレスが入力されていません。') }
elsif (!$FORM{'tel'}) { &error('Error.','電話番号が入力されていません。') }
elsif (!$FORM{'subject'}) { &error('Error.','お問い合わせタイトルが入力されていません。') }
}
############
# 入力画面 #
############
sub input {
$qno = $FORM{'qn'};
print <<"EOT";
EOT
} #sub input end
##############
# メール送信 #
##############
sub sendmail {
if (!$FORM{'email'}) {$FORM{'email'} = $mailto;}
if (!open(OUT,"| $sendmail $mailto $bcc")) { &error('Error.','メールは送信されませんでした。') }
&jcode'convert(*subject,'jis');
print OUT 'X-Mailer: CMS_Form_Mail' ."\n";
print OUT "To: $mailto\n";
print OUT "From: $FORM{'email'}\n";
print OUT "Subject: $subject\n";
print OUT "Content-Type: text/plain; charset=ISO-2022-JP\n";
print OUT "\n\n";
$message = "浅海住建 御中 Webからの問い合わせです。\n";
$message .= "----------------------------------------------------\n\n";
$message .= "-- <<お問い合わせ送信者>> ----------------------\n\n";
$message .= "お名前 :$FORM{'name'} 様\n";
$message .= "フリガナ:$FORM{'ruby'}\n";
$message .= "E-mail :$FORM{'email'}\n";
$message .= "電話番号:$FORM{'tel'}\n";
$message .= "----------------------------------------------------\n\n";
$message .= "-- <<お問い合わせ物件>> ------------------------\n\n";
$message .= "物件No :$FORM{'qno'}\n";
$message .= "タイトル:$FORM{'ruby'}\n";
if (!$FORM{'text'}) { $FORM{'text'} = '記入なし'}
$FORM{'text'} =~ s/\;/\n/g;
$message .= "お問い合わせ内容:\n";
$message .= "$FORM{'text'}\n";
$message .= "----------------------------------------------------\n\n";
&jcode'convert(*message,'jis');
print OUT "$message";
close OUT;
} # sub sendmail end
################
# 送信終了画面 #
################
sub thanks_html
{
✓
print <<"EOT";
お問い合わせありがとうございます。
以下の内容で送信いたしましたのでご確認ください。
[トップページへ戻る]
 |
$FORM{'name'} |
 |
$FORM{'ruby'} |
 |
$FORM{'email'} |
 |
$FORM{'tel'} |
 |
 |
$FORM{'qno'} |
 |
$FORM{'subject'} |
 |
$FORM{'text'}
|
EOT
} #sub thanks_html end
################
# HTMLヘッダー #
################
sub html_head {
print "Content-type: text/html\n\n";
print <<'EOT';
浅海住建 - お問い合せ -

EOT
}
################
# HTMLフッター #
################
sub html_foot {
print <<'EOT';
Copyright(C)2001
Asaumi Jyuken. All Rights Reserved. |
EOT
}
################
# メインループ #
################
&readData(*data); # include "readGetData" "readPostData"
&parseData(*data,*dataDict); # include "decodeData"
if ($FORM{'action'} eq ' 送 信 ') {
&sendmail;
&html_head;
&thanks_html;
&html_foot;
}
else {
&html_head;
&input;
&html_foot;
}
exit;