#!/usr/local/bin/perl
#↑Perlのパスを指定
#----------------------------------------------------------#
#Copyright(C)2000-2003 ohtan. All rights reserved. #
#CmfFormMail ver6.30 #
#Build :2000/04/30 #
#Updata:2003/05/19 #
#Home :Counter Material Factory #
# http://cmf.ohtanz.com/ #
#Mail :cmf@ohtanz.com #
#----------------------------------------------------------#
#_______________________[ 基本設定 ]_______________________
#[1]送信先メールアドレス-----------------------------------
#(Ex:複数指定する場合('your@mail.addr1','your@mail.addr2','your@mail.addr3'))
@MailAddr = ('master@chobundo.com');
#[2]投稿があった際にFromに名前を入れる
$HeaderFrom = 1; #(0:OFF/1:ON)
#[3]このCGIの名称(通常は変更不要)--------------------------
$MyScript = 'mail.cgi';
#[4]戻り先URL----------------------------------------------
$ReturnUrl = 'http://www.chobundo.com/';
#[5]sendmailのパス-----------------------------------------
$SendMail = '/usr/sbin/sendmail';
#[6]最大投稿文字数(byte)-----------------------------------
$MaxLength = 200000;
#[7]アクセスを拒否するIPアドレス---------------------------
@AccLimit = ();
#[8]フォーム用画像を入れるディレクトリ---------------------
#(通常は変更不要、最後に「/」は入れない、http://でもOK)
$ImageDir = './images';
#[9]海外サーバー用時差調整(最初の数字を1-24時間で指定)-----
#(Ex:15時間進める場合15*60*60/15時間遅らせる場合-15*60*60)
$TimeDiff = 0;
#[10]stdio.plのパス----------------------------------------
$LibStdio = './stdio.pl';
#[11]jcode.plのパス----------------------------------------
$LibJcode = './jcode.pl';
#[12]fold.plのパス-----------------------------------------
$LibFold = './fold.pl';
#__________________[ フォーム全体の設定 ]__________________
#[13]フォーム内全体の設定----------------------------------
$FmbgColor = '#FFFFFF'; #背景色
$FmbdColor = '#000000'; #ボーダーカラー
$FmbdSize = 1; #ボーダーサイズ
$FmftColor = '##000000'; #フォントカラー
$FmftFace = 'MS UI Gothic'; #フォントの種類
$FmftSize = '12px'; #フォントサイズ
$FmtbWidth = 500; #フォームの幅(%指定は不可)
#[14]フォーム外の背景--------------------------------------
$BackColor = '#FFFFFF'; #色
$BackImage = ''; #画像までのパス(http://でもOK)
$BackFix = 1; #画像の固定(0:OFF/1:ON)
#[15]タイトルサイズ/色の設定-------------------------------
$TitleColor = '#000000'; #フォントカラー
$TitleSize = '18px'; #フォントサイズ
#[16]コメントサイズ/色の設定-------------------------------
$CommColor = '#000000'; #フォントカラー
$CommSize = '14px'; #フォントサイズ
#[17]LINK色の設定------------------------------------------
$LinkNormal = '#4275bb'; #未訪問
$LinkVisit = '#4275bb'; #訪問済
$LinkHover = '#4275bb'; #アクティブ
#[18]スクロールバーの色設定--------------------------------
$ScrlArrow = '#000000'; #arrow
$ScrlBase = '#FFFFFF'; #base
$ScrlFace = '#FFFFFF'; #face
$ScrlHigh = '#FFFFFF'; #highlight
$ScrlShadow = '#000000'; #shadow
$ScrlDlight = '#FFFFFF'; #3dlight
$ScrlDark = '#FFFFFF'; #darkshadow
$ScrlTrack = '#FFFFFF'; #track
#__________________[ 入力フォームの設定 ]__________________
#[19]入力欄全体の設定--------------------------------------
$InputbgCol = '#FFFFFF'; #背景色
$InputbdCol = '#000000'; #ボーダーカラー
$InputbdSiz = 1; #ボーダーサイズ
$InputftCol = '#000000'; #フォントカラー
$InputftFce = 'MS UI Gothic'; #フォントの種類
$InputftSiz = '12px'; #フォントサイズ
#[20]件名入力欄の設定--------------------------------------
$SubFix = 1; #入力欄の表示(0:OFF/1:ON)
$SubTtl = 'Title'; #名称
$SubJect = ''; #入力欄非表示の時の件名
$SubSize = 60; #入力欄のサイズ
$SubSurely = 1; #入力欄表示の時の入力必須(0:OFF/1:ON)
$SubDef = ''; #入力欄にデフォルトで入れる文字列
#[21]名前入力欄の設定--------------------------------------
$NameColumn = 'Name'; #名称
$NameSize = 30; #入力欄のサイズ
$NameSurely = 1; #入力必須(0:OFF/1:ON)
#[22]フリガナ入力欄の設定----------------------------------
$KanaFix = 0; #入力欄の表示(0:OFF/1:ON)
$KanaColumn = 'Kana'; #名称
$KanaSize = 30; #入力欄のサイズ
$KanaSurely = 1; #入力必須(0:OFF/1:ON)
#[23]メールアドレス入力欄の設定----------------------------
$MailColumn = 'E-mail'; #名称
$MailSize = 20; #入力欄のサイズ
$MailSurely = 1; #入力必須(0:OFF/1:ON)
#[24]メッセージ入力欄の名称--------------------------------
$MessColumn = 'Message'; #名称
$MessCols = 80; #入力欄の列数
$MessRows = 10; #入力欄の行数
$MessSurely = 1; #入力必須(0:OFF/1:ON)
#[25]タイトルの設定----------------------------------------
$TitleName = '朝文堂メールフォームです。お気軽にご利用ください。'; #名称
$TitleImage = 'http://www.chobundo.com/iken_title.gif'; #画像までのパス(http://でもOK)
#[26]コメントの設定----------------------------------------
$CommName = 'ご記入してください。';
#[27]送信前確認チェックボックスの名称----------------------
$BeforeName = '送信前に内容を確認';
$BeforeChk = 1; #デフォルトでチェックを入れる(0:OFF/1:ON)
#[28]メールコピーチェックボックスの設定------------------
$CopyFix = 1; #表示(0:OFF/1:ON)
$CopyName = '自分宛にコピーを送る'; #名称
$CopyChk = 1; #デフォルトでチェックを入れる(0:OFF/1:ON)
#[29]送信ボタンの名称--------------------------------------
$SubmitName = 'Submit';
#[30]リセットボタンの名称----------------------------------
$ResetName = 'Reset';
#[31]Homeの設定--------------------------------------------
$ReturnType = 1; #ボタンのタイプ(0:非表示/1:OPEN BUTTON/2:CLOSE BOTTON/3:LINK)
$ReturnName = 'Home'; #名称
$ReturnTget = '_top'; #$ReturnTypeがLINKの時のtarget属性
#[32]テキストエリア内文字列の自動改行----------------------
$AreaLine = 1; #(0:OFF/1:ON)
$AreaByte = 100; #1行の文字数(byte)
#__________________[ 確認フォームの設定 ]__________________
#[33]タイトルの設定----------------------------------------
$ChktlName = '朝文堂メールフォームです。お気軽にご利用ください。'; #名称
$ChktlImage = 'http://www.chobundo.com/iken_title.gif'; #画像までのパス(http://でもOK)
#[34]コメントの設定----------------------------------------
$ChkcmmName = '間違いなければSubmitを押して下さい';
#[35]送信ボタンの名称--------------------------------------
$ChksubName = 'Submit';
#[36]Backボタンの名称--------------------------------------
$ChkbntName = 'Back';
#________________[ 送信完了フォームの設定 ]________________
#[37]戻り先LINKの設定--------------------------------------
$RetName = 'TOP'; #名称
$RetTarget = '_parent'; #target属性
#[38]タイトルの設定----------------------------------------
$EndtlName = 'メッセージありがとうございました'; #名称
$EndtlImage = ''; #画像までのパス(http://でもOK)
#[39]コメントの設定----------------------------------------
$EndcmmName = 'ご質問はできるだけ早くお返事したいと思います。';
#_______________[ CSVファイルへの出力設定 ]________________
#[40]CSVファイルへの出力
$CsvUse = 0; #出力(0:OFF/1:ON)
$CsvFile = './csv/data.csv'; #出力先ファイル名
#______________________[ 項目の追加 ]______________________
#[41]一行テキスト------------------------------------------
#[$Addtext]は一行テキストの追加(0:しない/1:する)を指定して下さい
#[turn]は追加項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の追加項目の「turn」と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は一行テキスト内にデフォルトで入れたい文字列を指定して下さい
#[size]は一行テキストのサイズ(長さ)を指定して下さい
#[surl]はその項目を入力必須に(yes:する/no:しない)を指定して下さい
#一行テキストの追加が複数ある場合は「@text = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#
#[サンプル]
#$AddText = 1;
#
#@text = (
#{
#'turn' => '0',
#'name' => 'ホームページ',
#'vlue' => 'http://',
#'size' => '40',
#'surl' => 'yes',
#},
#{
#'turn' => '2',
#'name' => '住所',
#'vlue' => '',
#'size' => '50',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------
$AddText = 1;
@text = (
{
'turn' => '0',
'name' => 'ホームページ',
'vlue' => 'http://',
'size' => '40',
'surl' => 'no',
},
{
'turn' => '2',
'name' => '住所',
'vlue' => '',
'size' => '50',
'surl' => 'no',
},
);
#[42]プルダウンの追加--------------------------------------
#[$AddPull]はプルダウンの追加(0:しない/1:する)を指定して下さい
#[turn]は追加項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の追加項目の「turn」と重複しないように注意して下さい
#[type]はプルダウン内のメニューの出力方法を指定します
#[type]の種類は下記の3つがあります
#・normal:vlueで指定した任意の文字列
#・date :西暦年月日の自動出力
#・pref :都道府県の自動出力
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は「type」の種類によって指定方法が変わります
#[vlue]の指定方法は下記の3つがあります
#・typeがnormalの時:表示する全てのメニューを「,」で区切って指定します
#・typeがdateの時 :空欄
#・typeがprefの時 :西暦の範囲を「1970-2002」というように指定します
#[size]は表示されるメニューの行数を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#プルダウンの追加が複数ある場合は「@pull = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#
#[サンプル]
#$AddPull = 1;
#
#@pull = (
#{
#'turn' => '4',
#'type' => 'normal',
#'name' => 'ごようは?',
#'vlue' => '質問,相互LINK,暇つぶし,お願い,冷やかし',
#'size' => '1',
#'surl' => 'yes',
#},
#{
#'turn' => '3',
#'type' => 'date',
#'name' => '生年月日',
#'vlue' => '1970-2002',
#'size' => '1',
#'surl' => 'yes',
#},
#{
#'turn' => '1',
#'type' => 'pref',
#'name' => '都道府県',
#'vlue' => '',
#'size' => '2',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------
$AddPull = 1;
@pull = (
{
'turn' => '4',
'type' => 'normal',
'name' => 'ごようは?',
'vlue' => '質問,注文,連絡,確認,お見積り',
'size' => '1',
'surl' => 'yes',
},
{
'turn' => '3',
'type' => 'date',
'name' => '生年月日',
'vlue' => '1900-2007',
'size' => '1',
'surl' => 'no',
},
{
'turn' => '1',
'type' => 'pref',
'name' => '都道府県',
'vlue' => '',
'size' => '1',
'surl' => 'no',
},
);
#[43]マルチプルの追加--------------------------------------
#[$AddMult]はマルチプルの追加(0:しない/1:する)を指定して下さい
#[turn]は追加項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の追加項目の「turn」と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は表示する全てのメニューを「,」で区切って指定します
#[size]は表示されるメニューの行数を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#マルチプルの追加が複数ある場合は「@mult = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#[サンプル]
#$AddMult = 1;
#
#@mult = (
#{
#'turn' => '5',
#'name' => '趣味は?
(複数選択可)',
#'vlue' => '映画鑑賞,テレビ鑑賞,音楽鑑賞,アウトドア,ゲーム,車,バイク,スポーツ,パソコン,読書,インターネット',
#'size' => '5',
#'surl' => 'yes',
#},
#{
#'turn' => '6',
#'name' => '好きな食べ物は?(複数選択可)',
#'vlue' => 'オムライス,お寿司,焼肉,ケーキ,パスタ,カレー,ハンバーグ,ピザ',
#'size' => '3',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------
$AddMult = 0;
@mult = (
{
'turn' => '5',
'name' => '趣味は?
(複数選択可)',
'vlue' => '映画鑑賞,テレビ鑑賞,音楽鑑賞,アウトドア,ゲーム,車,バイク,スポーツ,パソコン,読書,インターネット',
'size' => '5',
'surl' => 'yes',
},
{
'turn' => '6',
'name' => '好きな食べ物は?
(複数選択可)',
'vlue' => 'オムライス,お寿司,焼肉,ケーキ,パスタ,カレー,ハンバーグ,ピザ',
'size' => '3',
'surl' => 'yes',
},
);
#[44]ラジオボタンの追加------------------------------------
#[$AddRdio]はラジオボタンの追加(0:しない/1:する)を指定して下さい
#[turn]は追加項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の追加項目の「turn」と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は表示する全てのメニューを「,」で区切って指定します
#[vlue]メニューが多数あって1行で表示しきれない場合は改行タグ
を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#ラジオボタンの追加が複数ある場合は「@rdio = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#[サンプル]
#$AddRdio = 1;
#
#@rdio = (
#{
#'turn' => '7',
#'name' => '年齢は?',
#'vlue' => '10才未満,10代,20代,30代,
,40代,50代,60代,70才以上',
#'surl' => 'yes',
#},
#{
#'turn' => '8',
#'name' => 'インターネットの接続環境は?',
#'vlue' => 'ダイアルアップ,ISDN,ADSL,SDSL,CATV,FTTH',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------
$AddRdio = 0;
@rdio = (
{
'turn' => '7',
'name' => '年齢は?',
'vlue' => '10才未満,10代,20代,30代,
,40代,50代,60代,70才以上',
'surl' => 'yes',
},
{
'turn' => '8',
'name' => 'インターネットの接続環境は?',
'vlue' => 'ダイアルアップ,ISDN,ADSL,SDSL,CATV,FTTH',
'surl' => 'yes',
},
);
#[45]チェックボックスの追加
#[$AddChek]はチェックボックスの追加(0:しない/1:する)を指定して下さい
#[turn]は追加項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の追加項目の「turn」と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]は表示する全てのメニューを「,」で区切って指定します
#[vlue]メニューが多数あって1行で表示しきれない場合は改行タグ
を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#チェックボックスの追加が複数ある場合は「@chek = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#[サンプル]
#$AddChek = 1;
#
#@chek = (
#{
#'turn' => '9',
#'name' => 'HPのジャンルは?
(複数選択可)',
#'vlue' => 'ゲーム,イラスト,音楽,芸能,
,素材,写真,旅行,その他',
#'surl' => 'yes',
#},
#{
#'turn' => '10',
#'name' => '配布して欲しいCGIは?
(複数選択可)',
#'vlue' => 'チャット,ゲストブック,ゲーム,日記,その他',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------
$AddChek = 0;
@chek = (
{
'turn' => '9',
'name' => 'HPのジャンルは?
(複数選択可)',
'vlue' => 'ゲーム,イラスト,音楽,芸能,
,素材,写真,旅行,その他',
'surl' => 'yes',
},
{
'turn' => '10',
'name' => '配布して欲しいCGIは?
(複数選択可)',
'vlue' => 'チャット,ゲストブック,ゲーム,日記,その他',
'surl' => 'yes',
},
);
#[46]テキストエリアの追加----------------------------------
#[$AddArea]はテキストエリアの追加(0:しない/1:する)を指定して下さい
#[turn]は追加項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の追加項目の「turn」と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[vlue]はテキストエリア内にデフォルトで入れたい文字列を指定して下さい
#[vlue]テキストエリア内のデフォルト文字列を改行したい時は改行タグ
を指定して下さい
#[size]は行数、列数「'size' => '行数,列数',」を指定します
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#テキストエリアの追加が複数ある場合は「@area = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#[サンプル]
#$AddArea = 1;
#
#@area = (
#{
#'turn' => '11',
#'name' => '備考欄1',
#'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
#'size' => '5,60',
#'surl' => 'yes',
#},
#{
#'turn' => '12',
#'name' => '備考欄2',
#'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
#'size' => '5,60',
#'surl' => 'yes',
#},
#);
#----------------------------------------------------------
$AddArea = 0;
@area = (
{
'turn' => '11',
'name' => '備考欄1',
'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
'size' => '5,60',
'surl' => 'yes',
},
{
'turn' => '12',
'name' => '備考欄2',
'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
'size' => '5,60',
'surl' => 'yes',
},
);
#[47]添付ファイルフォームの追加----------------------------
#[$AddAttc]は添付ファイルフォームの追加(0:しない/1:する)を指定して下さい
#[$AttcTmp]は添付ファイルを一時的に保管するディレクトリパスを指定して下さい
#[$AttcEnc]は添付ファイルのエンコード形式(0:base64encode/1:uuencode)を指定して下さい
#[turn]は追加項目全体の中で上から何番目に表示するかを「0」から指定して下さい
#[turn]は他の追加項目の「turn」と重複しないように注意して下さい
#[name]はその項目の名称(題名)を指定して下さい
#[size]は添付ファイルフォームのサイズ(長さ)を指定して下さい
#[capa]は添付ファイルの最大ファイルサイズ(byte)を指定して下さい
#[surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
#添付ファイルフォームの追加が複数ある場合は「@attc = ({・・・},{・・・},);」となります
#追加項目は「{・・・},」までが1組となります
#添付ファイルフォームを追加した場合「temp」ディレクトリを作成してパーミッションを777にする必要があります
#[サンプル]
#$AddAttc = 1;
#$AttcTmp = './temp/';
#$AttcEnc = 0;
#
#@attc = (
#{
#'turn' => '13',
#'name' => '添付ファイル1',
#'size' => '40',
#'capa' => '100000',
#'surl' => 'no',
#},
#{
#'turn' => '14',
#'name' => '添付ファイル2',
#'size' => '40',
#'capa' => '100000',
#'surl' => 'no',
#},
#);
#----------------------------------------------------------
$AddAttc = 0;
$AttcTmp = './temp/';
$AttcEnc = 0;
@attc = (
{
'turn' => '13',
'name' => '添付ファイル1',
'size' => '40',
'capa' => '200000',
'surl' => 'no',
},
{
'turn' => '14',
'name' => '添付ファイル2',
'size' => '40',
'capa' => '200000',
'surl' => 'no',
},
);
#_______________________[ 設定終了 ]_______________________
$Copyright = '';
$ScriptVer = '';
require "$LibJcode";
require "$LibStdio";
require "$LibFold";
$stdio::max = 1048576;
%in = ();
stdio::getFormData(\%in,1,"sjis",1,"<>","$AttcTmp");
$GetMode = $in{'GetMode'};
$GetSubject = $in{'GetSubject'};
$GetName = $in{'GetName'};
$GetKana = $in{'GetKana'};
$GetEmail = $in{'GetEmail'};
$GetMessage = $in{'GetMessage'};
$GetCheck = $in{'GetCheck'};
$GetCopy = $in{'GetCopy'};
$RemoteAddr = $ENV{'REMOTE_ADDR'};
if ($AccLimit[0] && $RemoteAddr && grep($RemoteAddr =~ /^$_/,@AccLimit)) {
&Err("Sorry. You don't have permission to access !!");
}
if ($GetMode eq "Send") {
if ($SubFix && $SubSurely && $GetSubject eq "") {
&Err("$SubTtlを入力して下さい。");
}
elsif ($NameSurely && $GetName eq "") {
&Err("$NameColumnを入力して下さい。");
}
elsif ($KanaFix && $KanaSurely && $GetKana eq "") {
&Err("$KanaColumnを入力して下さい。");
}
elsif ($MailSurely && $GetEmail eq "") {
&Err("$MailColumnを入力して下さい。");
}
elsif ($MailSurely && $GetEmail !~ /([\w\.\-]+)\@([\w\.\-]+)/) {
&Err("$MailColumnの書式が正しくありません。");
}
elsif ($GetEmail ne "" && $GetEmail !~ /([\w\.\-]+)\@([\w\.\-]+)/) {
&Err("$MailColumnの書式が正しくありません。");
}
elsif ($GetCopy eq "yes" && $GetEmail eq "") {
&Err("$MailColumnを入力して下さい。");
}
elsif ($MessSurely && $GetMessage eq "") {
&Err("$MessColumnを入力して下さい。");
}
if ($AddText) {
foreach (0..$#text) {
my $TextTurn = $text[$_]{'turn'};
my $TextName = $text[$_]{'name'};
my $TextSurl = $text[$_]{'surl'};
my $TextVlue = $in{"text$_"};
if ($TextSurl eq "yes" && $TextVlue eq "") {
&Err("$TextNameを入力して下さい。");
}
}
}
if ($AddPull) {
foreach (0..$#pull) {
my $PullTurn = $pull[$_]{'turn'};
my $PullType = $pull[$_]{'type'};
my $PullName = $pull[$_]{'name'};
my $PullSurl = $pull[$_]{'surl'};
if ($PullSurl eq "yes") {
if ($PullType eq "date") {
my $PullVlue1 = $in{"pull_year$_"};
my $PullVlue2 = $in{"pull_month$_"};
my $PullVlue3 = $in{"pull_day$_"};
if ($PullVlue1 eq "" || $PullVlue2 eq "" || $PullVlue3 eq "") {
&Err("$PullNameを選択して下さい。");
}
} else {
my $PullVlue = $in{"pull$_"};
if ($PullVlue eq "") {
&Err("$PullNameを選択して下さい。");
}
}
}
}
}
if ($AddMult) {
foreach (0..$#mult) {
my $MultTurn = $mult[$_]{'turn'};
my $MultName = $mult[$_]{'name'};
my $MultSurl = $mult[$_]{'surl'};
my @MultVlue = split(/<>/,$in{"mult$_"});
if ($MultSurl eq "yes" && $MultVlue[0] eq "") {
&Err("$MultNameを選択して下さい。");
}
}
}
if ($AddRdio) {
foreach (0..$#rdio) {
my $RdioTurn = $rdio[$_]{'turn'};
my $RdioName = $rdio[$_]{'name'};
my $RdioSurl = $rdio[$_]{'surl'};
my $RdioVlue = $in{"rdio$_"};
if ($RdioSurl eq "yes" && $RdioVlue eq "") {
&Err("$RdioNameを選択して下さい。");
}
}
}
if ($AddChek) {
foreach (0..$#chek) {
my $ChekTurn = $chek[$_]{'turn'};
my $ChekName = $chek[$_]{'name'};
my $ChekSurl = $chek[$_]{'surl'};
my @ChekVlue = split(/<>/,$in{"chek$_"});
if ($ChekSurl eq "yes" && $ChekVlue[0] eq "") {
&Err("$ChekNameを選択して下さい。");
}
}
}
if ($AddArea) {
foreach (0..$#area) {
my $AreaTurn = $area[$_]{'turn'};
my $AreaName = $area[$_]{'name'};
my $AreaSurl = $area[$_]{'surl'};
my $AreaVlue = $in{"area$_"};
if ($AreaSurl eq "yes" && $AreaVlue eq "") {
&Err("$AreaNameを入力して下さい。");
}
}
}
if ($AddAttc) {
foreach (0..$#attc) {
my $AttcTurn = $attc[$_]{'turn'};
my $AttcName = $attc[$_]{'name'};
my $AttcCapa = $attc[$_]{'capa'};
my $AttcSurl = $attc[$_]{'surl'};
my $AttcVlue = $in{"attc$_"};
my $AttcSize = $in{"attc$_->size"};
if ($AttcSurl eq "yes" && $AttcVlue eq "") {
&Err("$AttcNameを指定して下さい。");
}
elsif ($AttcVlue ne "" && $AttcCapa < $AttcSize) {
&Err("$AttcNameのファイルサイズは$AttcCapaバイトまでです。(現在$AttcSizeバイト)");
}
}
}
if ($GetCheck ne "yes") {
$len = 0;
foreach (keys(%in)) {
$in{$_} =~ s/&/&/g;
$in{$_} =~ s/"/"/g;
$in{$_} =~ s/<>/<>/g;
$in{$_} =~ s/<//g;
$in{$_} =~ s/
/\n/g;
$in{$_} =~ s/
/\n/g;
$len += length($in{$_});
}
if ($MaxLength < $len) {
&Err("最大投稿文字数($MaxLength byte)を超えています。(現在$len byte)");
}
$GetSubject = $in{'GetSubject'};
$GetName = $in{'GetName'};
$GetKana = $in{'GetKana'};
$GetEmail = $in{'GetEmail'};
$GetMessage = $in{'GetMessage'};
$GetEmail = $MailAddr[0] if !$GetEmail;
$GetSubject = $SubJect if !$SubFix;
%CsvSub = ();
%CsvBdy = ();
@AddMail = ();
if ($AddText) {
foreach (0..$#text) {
my $TextTurn = $text[$_]{'turn'};
my $TextName = $text[$_]{'name'};
my $TextVlue = $in{"text$_"};
$TextName =~ s/
//ig;
$AddMail[$TextTurn] = "[ $TextName ] $TextVlue\n";
if ($CsvUse) {
$TextName =~ s/<[a-zA-Z][^>]*>//g;
$TextName =~ s/<\/[a-zA-Z][^>]*>//g;
$TextTurn2 = sprintf("%03d",$TextTurn);
$CsvSub{$TextTurn2} = $TextName;
$CsvBdy{$TextTurn2} = $TextVlue;
}
}
}
if ($AddPull) {
foreach (0..$#pull) {
my $PullType = $pull[$_]{'type'};
my $PullTurn = $pull[$_]{'turn'};
my $PullName = $pull[$_]{'name'};
$PullName =~ s/
//ig;
if ($PullType eq "normal" || $PullType eq "pref") {
my $PullVlue = $in{"pull$_"};
$AddMail[$PullTurn] = "[ $PullName ] $PullVlue\n";
if ($CsvUse) {
$PullName =~ s/<[a-zA-Z][^>]*>//g;
$PullName =~ s/<\/[a-zA-Z][^>]*>//g;
$PullTurn2 = sprintf("%03d",$PullTurn);
$CsvSub{$PullTurn2} = $PullName;
$CsvBdy{$PullTurn2} = $PullVlue;
}
}
elsif ($PullType eq "date") {
my $PullVlue1 = $in{"pull_year$_"};
my $PullVlue2 = $in{"pull_month$_"};
my $PullVlue3 = $in{"pull_day$_"};
$AddMail[$PullTurn] = "[ $PullName ] $PullVlue1年$PullVlue2月$PullVlue3日\n";
if ($CsvUse) {
$PullName =~ s/<[a-zA-Z][^>]*>//g;
$PullName =~ s/<\/[a-zA-Z][^>]*>//g;
$PullTurn2 = sprintf("%03d",$PullTurn);
$CsvSub{$PullTurn2} = $PullName;
$CsvBdy{$PullTurn2} = "$PullVlue1年$PullVlue2月$PullVlue3日";
}
} else {
&Err("プルダウンタイプの指定が正しくありません。");
}
}
}
if ($AddMult) {
foreach (0..$#mult) {
my $MultTurn = $mult[$_]{'turn'};
my $MultName = $mult[$_]{'name'};
my $MultVlue = $in{"mult$_"};
$MultName =~ s/
//ig;
$MultVlue =~ s/<>/\//g;
$AddMail[$MultTurn] = "[ $MultName ] $MultVlue\n";
if ($CsvUse) {
$MultName =~ s/<[a-zA-Z][^>]*>//g;
$MultName =~ s/<\/[a-zA-Z][^>]*>//g;
$MultTurn2 = sprintf("%03d",$MultTurn);
$CsvSub{$MultTurn2} = $MultName;
$CsvBdy{$MultTurn2} = $MultVlue;
}
}
}
if ($AddRdio) {
foreach (0..$#rdio) {
my $RdioTurn = $rdio[$_]{'turn'};
my $RdioName = $rdio[$_]{'name'};
my $RdioVlue = $in{"rdio$_"};
$RdioName =~ s/
//ig;
$AddMail[$RdioTurn] = "[ $RdioName ] $RdioVlue\n";
if ($CsvUse) {
$RdioName =~ s/<[a-zA-Z][^>]*>//g;
$RdioName =~ s/<\/[a-zA-Z][^>]*>//g;
$RdioTurn2 = sprintf("%03d",$RdioTurn);
$CsvSub{$RdioTurn2} = $RdioName;
$CsvBdy{$RdioTurn2} = $RdioVlue;
}
}
}
if ($AddChek) {
foreach (0..$#chek) {
my $ChekTurn = $chek[$_]{'turn'};
my $ChekName = $chek[$_]{'name'};
my $ChekVlue = $in{"chek$_"};
$ChekName =~ s/
//ig;
$ChekVlue =~ s/<>/\//g;
$AddMail[$ChekTurn] = "[ $ChekName ] $ChekVlue\n";
if ($CsvUse) {
$ChekName =~ s/<[a-zA-Z][^>]*>//g;
$ChekName =~ s/<\/[a-zA-Z][^>]*>//g;
$ChekTurn2 = sprintf("%03d",$ChekTurn);
$CsvSub{$ChekTurn2} = $ChekName;
$CsvBdy{$ChekTurn2} = $ChekVlue;
}
}
}
if ($AddArea) {
foreach (0..$#area) {
my $AreaTurn = $area[$_]{'turn'};
my $AreaName = $area[$_]{'name'};
my $AreaVlue = $in{"area$_"};
$AreaName =~ s/
//ig;
if ($AreaLine) {
$AreaVlue = &SplitMessage($AreaVlue);
$AreaVlue =~ s/
/\r/ig;
}
$AddMail[$AreaTurn] = "[ $AreaName ++++++++++++++++++++++++++++++ ]\n";
$AddMail[$AreaTurn] .= "$AreaVlue\n";
if ($CsvUse) {
$AreaVlue =~ s/(\r\n|\r|\n)//g;
$AreaName =~ s/<[a-zA-Z][^>]*>//g;
$AreaName =~ s/<\/[a-zA-Z][^>]*>//g;
$AreaTurn2 = sprintf("%03d",$AreaTurn);
$CsvSub{$AreaTurn2} = $AreaName;
$CsvBdy{$AreaTurn2} = $AreaVlue;
}
}
}
if ($AddAttc) {
@attach = ();
$c = 0;
foreach (0..$#attc) {
my $AttcVlue = $in{"attc$_"};
my $AttcName = "$AttcTmp$in{\"attc$_->name\"}";
my $AttcType = $in{"attc$_->type"};
my $AttcTurn = $attc[$_]{'turn'};
my $AttcName2 = $attc[$_]{'name'};
$AttcName = $in{"attc$_\_name"} if $AttcName eq $AttcTmp;
$AttcType = $in{"attc$_\_type"} if !$AttcType;
if (-e $AttcVlue) {
rename($AttcVlue,$AttcName);
$attach[$c] = "$AttcName;$AttcType";
$c++;
}
if ($CsvUse) {
$AttcName2 =~ s/<[a-zA-Z][^>]*>//g;
$AttcName2 =~ s/<\/[a-zA-Z][^>]*>//g;
$AttcTurn2 = sprintf("%03d",$AttcTurn);
$CsvSub{$AttcTurn2} = $AttcName2;
$CsvBdy{$AttcTurn2} = $AttcName;
}
}
}
if ($AreaLine) {
$GetMessage = &SplitMessage($GetMessage) if $GetMessage =~ /
/;
}
$NowTime = stdio::getTime("yyyy/mm/dd (ww2) hh:nn",(3600 * 9) + $TimeDiff);
$UserAgent = $ENV{'HTTP_USER_AGENT'};
$RemoteHost = $ENV{'REMOTE_HOST'};
if ($RemoteHost eq $RemoteAddr || $RemoteHost eq '') {
$RemoteHost = gethostbyaddr(pack("C4",split(/\./,$RemoteAddr)),2);
$RemoteHost = $RemoteAddr if $RemoteHost eq '';
}
if ($GetEmail eq $MailAddr[0]) {
$BodyEmail = "";
} else {
$BodyEmail = $GetEmail;
}
$MailBody = "[ Date ] $NowTime\n";
$MailBody .= "[ RemoteHost ] $RemoteHost\n";
$MailBody .= "[ RemoteAddr ] $RemoteAddr\n";
$MailBody .= "[ HttpUserAgent ] $UserAgent\n";
$MailBody .= "[ $SubTtl ] $GetSubject\n";
$MailBody .= "[ $NameColumn ] $GetName\n";
if ($KanaFix) {
$MailBody .= "[ $KanaColumn ] $GetKana\n";
}
$MailBody .= "[ $MailColumn ] $BodyEmail\n";
foreach (@AddMail) {
$MailBody .= $_;
}
$MailBody .= "[ $MessColumn ++++++++++++++++++++++++++++++ ]\n";
$MailBody .= "$GetMessage\n\n";
$MailBody .= "$ScriptVer\n";
if ($HeaderFrom) {
$SendFrom = "\"$GetName\" <$GetEmail>";
} else {
$SendFrom = $GetEmail;
}
%header = ('To' => "$MailAddr[0]",
'From' => "$SendFrom",
'Subject' => "$GetSubject",
);
$Bcc = "";
foreach (1..$#MailAddr) {
$Bcc .= "$MailAddr[$_],";
}
if ($GetCopy eq "yes") {
$Bcc .= "$GetEmail";
}
$Bcc =~ s/\,$//;
$header{'Bcc'} = $Bcc;
if (!$AttcEnc) {
$encode = 'base64encode';
} else {
$encode = 'uuencode';
}
if (!stdio::sendmail($SendMail,\%header,$MailBody,0,$encode,@attach)) {
&Err("メールの送信に失敗しました。");
}
if ($CsvUse) {
$SubTtl =~ s/<[a-zA-Z][^>]*>//g;
$SubTtl =~ s/<\/[a-zA-Z][^>]*>//g;
$NameColumn =~ s/<[a-zA-Z][^>]*>//g;
$NameColumn =~ s/<\/[a-zA-Z][^>]*>//g;
$MailColumn =~ s/<[a-zA-Z][^>]*>//g;
$MailColumn =~ s/<\/[a-zA-Z][^>]*>//g;
$MessColumn =~ s/<[a-zA-Z][^>]*>//g;
$MessColumn =~ s/<\/[a-zA-Z][^>]*>//g;
$GetMessage =~ s/(\r\n|\r|\n)//g;
if ($KanaFix) {
$KanaColumn =~ s/<[a-zA-Z][^>]*>//g;
$KanaColumn =~ s/<\/[a-zA-Z][^>]*>//g;
$CsvHead = "Date,RemoteHost,RemoteAddr,HttpUserAgent,$SubTtl,$NameColumn,$KanaColumn,$MailColumn,";
} else {
$CsvHead = "Date,RemoteHost,RemoteAddr,HttpUserAgent,$SubTtl,$NameColumn,$MailColumn,";
}
foreach (sort {$a <=> $b} keys %CsvSub) {
$CsvHead .= "$CsvSub{$_},";
}
$CsvHead .= "$MessColumn\r\n";
if ($KanaFix) {
$CsvMain = "$NowTime,$RemoteHost,$RemoteAddr,$UserAgent,$GetSubject,$GetName,$GetKana,$BodyEmail,";
} else {
$CsvMain = "$NowTime,$RemoteHost,$RemoteAddr,$UserAgent,$GetSubject,$GetName,$BodyEmail,";
}
foreach (sort {$a <=> $b} keys %CsvBdy) {
$CsvMain .= "$CsvBdy{$_},";
}
$CsvMain .= "$GetMessage\r\n";
$CsvFlag = 1;
if (!-e $CsvFile) {
$CsvFlag = 0;
}
if (!open(OUT,">>$CsvFile")) {
&Err("$CsvFileのオープンに失敗しました。");
}
if (!$CsvFlag) {
print OUT $CsvHead;
}
print OUT $CsvMain;
close(OUT);
}
if ($AddAttc) {
opendir(IN,$AttcTmp);
@TempFiles = readdir(IN);
closedir(IN);
$NowLimit = time - 60;
foreach (@TempFiles) {
if ($_ ne '.' && $_ ne '..') {
$Unlinkfile = "$AttcTmp$_";
$LastLimit = (stat($Unlinkfile))[9];
if ($LastLimit < $NowLimit) {
unlink($Unlinkfile);
}
}
}
}
&Header($EndtlName);
$EndtlName = "" if $EndtlImage;
print "
\n";
print "
\n";
print "\n";
print "\n";
print "\n";
&Footer;
print " | \n";
print "
\n";
print "
\n";
print "
\n";
print "