#! /usr/bin/perl # # メール送信CGI for 和銅1300年 # Scripting by i-surf.co.jp require './lib/lib.pl'; require './lib/jcode.pl'; require './lib/mimew.pl'; ####################################################################### # 変数設定 ####################################################################### my $input_page = './input.htm'; # 入力画面 my $revise_page = './input.htm'; # 確認画面 my $thanks_page = './thanks.htm'; # 送信終了画面 my $sendmail = '/usr/sbin/sendmail'; my $mailto = '1300@wadoh.co.jp'; #my $bcc = 'order@i-surf.co.jp'; my $subject = '【お問い合わせ】'; # サブジェクト my %renraku = ( '01' => 'メール', '02' => '電話', '03' => 'FAX', ); my %content = ( '01' => 'ご質問', '02' => 'ツアーについて', '03' => '取材について', '04' => 'その他', ); ####################################################################### # メインループ ####################################################################### &readData; if ($FORM{'revise'}) { ✓ &revise_html; } elsif ($FORM{'input'}) { &input_html; } elsif ($FORM{'send'}) { &sendmail; &thanks_html; } else { &input_html; } exit; ####################################################################### # 入力チェック ####################################################################### sub check { my($msg1,$msg2); if (!$FORM{'name'}) { $msg1 = '入力をご確認ください。'; $msg2 = 'お名前を入力してください。'; } if (!$FORM{'hurigana'}) { $msg1 = '入力をご確認ください。'; $msg2 = 'ふりがなを選択してください。'; } if (!$FORM{'hurigana'}) { $msg1 = '入力をご確認ください。'; $msg2 = 'ふりがなを選択してください。'; } if (!$FORM{'hurigana'}) { $msg1 = '入力をご確認ください。'; $msg2 = 'ふりがなを選択してください。'; } if (!$FORM{'tel'}) { $msg1 = '入力をご確認ください。'; $msg2 = 'TELを入力してください。'; } if (!$FORM{'email'}) { $msg1 = '入力をご確認ください。'; $msg2 = 'E-mailを入力してください。'; } if ($FORM{'email'} && $FORM{'email'} !~ /^[\-\.\w]+\@[\-\.\w]+\..+/) { $msg1 = '入力をご確認ください。'; $msg2 = 'メールアドレスを確認してください。'; } if (!$FORM{'content'}) { $msg1 = '入力をご確認ください。'; $msg2 = 'お問い合わせ内容を入力してください。'; } if (!$FORM{'text'}) { $msg1 = '入力をご確認ください。'; $msg2 = '通信欄を入力してください。'; } if ($msg1) { &input_html($msg1,$msg2); exit; } if (!$FORM{'company'}) { $FORM{'company'} = '記入無し' } if (!$FORM{'fax'}) { $FORM{'fax'} = '記入無し' } if (!$FORM{'time'}) { $FORM{'time'} = '記入無し' } } ####################################################################### # 入力画面 ####################################################################### sub input_html { my $msg1 = shift; my $msg2 = shift; my %INPUT = %FORM; if ($FORM{'reset'}) { undef %INPUT; } my %TEXT = &data_init(\%INPUT); $TEXT{'information'} = &gen_err_msg($msg1,$msg2); $TEXT{'hidden'} = ''; $TEXT{'hidden'} = qq(); if (!open(READ_FILE,$input_page)) { return(0); } my @READ_FILE = ; chomp @READ_FILE; close(READ_FILE); print "Content-type: text/html\n\n"; foreach my $line (@READ_FILE) { foreach my $key (keys %TEXT) { $line =~ s/###$key###/$TEXT{"$key"}/g; } print "$line\n"; } } ####################################################################### # エラー画面表示 ####################################################################### sub error { my($msg1,$msg2) = @_ if @_; if (!open(READ_FILE,$error_page)) { return(0); } my @READ_FILE = ; chomp @READ_FILE; close(READ_FILE); print "Content-type: text/html\n\n"; foreach $line (@READ_FILE) { $line =~ s//$msg1/g; $line =~ s//$msg2/g; print "$line\n"; } exit; } ####################################################################### # 確認画面表示 ####################################################################### sub revise_html { my %TEXT = %FORM; foreach my $key (keys %TEXT) { if ($key eq 'action') { $FORM{'action'} = 'send'; } if ($key ne 'revise' && $key ne 'input') { $TEXT{'hidden'} .= qq(\n); } } $TEXT{'renraku'} = join q{、}, map { $renraku{$_} } split m{ }, $FORM{'renraku'}; $TEXT{'content'} = join q{、}, map { $content{$_} } split m{ }, $FORM{'content'}; $TEXT{'button1'} = ''; $TEXT{'button2'} = ''; $TEXT{'information'} = '確認画面です
記入内容をご確認のうえ、送信ボタンを押してください。


'; $TEXT{'text'} =~ s/;/
/g; if (!open(READ_FILE,$revise_page)) { return(0); } my @READ_FILE = ; chomp @READ_FILE; close(READ_FILE); print "Content-type: text/html\n\n"; foreach my $line (@READ_FILE) { foreach my $key (keys %TEXT) { $line =~ s/###$key###/$TEXT{"$key"}/g; } print "$line\n"; } } ####################################################################### # メール送信 ####################################################################### sub sendmail { my $print_txt = $FORM{'text'}; $print_txt =~ s/;/\n/g; my $subject = &mimeencode($subject); if ($FORM{'email'} eq '記入無し') { $FORM{'email'} = "$mailto";} $TEXT{'renraku'} = join q{、}, map { $renraku{$_} } split m{ }, $FORM{'renraku'}; $TEXT{'content'} = join q{、}, map { $content{$_} } split m{ }, $FORM{'content'}; if (!open(OUT,"| $sendmail -t $mailto")) { &error('Error.','メールは送信されませんでした。') } &jcode'convert(*subject,'jis'); print OUT 'X-Mailer: i-Surf_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"; $mail2shop = <<"EOT"; ---------------------------------------------------------------------- お問い合わせフォームからお問い合わせがありました。 ---------------------------------------------------------------------- ■ 送信内容 ---------------------------------------------------------- 会社名 :$FORM{'company'} お名前 :$FORM{'name'} 様 ふりがな :$FORM{'hurigana'} 郵便番号 :$FORM{'yuubin'} 住所 :$FORM{'address'} TEL :$FORM{'tel'} FAX :$FORM{'fax'} E-mail :$FORM{'email'} ご連絡方法:$TEXT{'renraku'} ご連絡可\能\時間帯:$FORM{'time'} お問い合せ内容:$TEXT{'content'} ---------------------------------------------------------------------- ■ 通信欄 ------------------------------------------------------------ $print_txt ---------------------------------------------------------------------- EOT &jcode'convert(*mail2shop,'jis'); print OUT "$mail2shop"; close OUT; } # sub sendmail end ####################################################################### # 送信終了画面 ####################################################################### sub thanks_html { if (!open(READ_FILE,$thanks_page)) { return(0); } my @READ_FILE = ; chomp @READ_FILE; close(READ_FILE); print "Content-type: text/html\n\n"; foreach $line (@READ_FILE) { print "$line\n"; } } ####################################################################### # データ初期化HTML本体 ####################################################################### sub data_init { my $INPUT = shift; $$INPUT{'text'} =~ s/;/\n/g; $TEXT{'company'} = &gen_textbox('company','30','',$$INPUT{'company'}); # 会社名 $TEXT{'name'} = &gen_textbox('name','30','',$$INPUT{'name'}); # お名前 $TEXT{'hurigana'} = &gen_textbox('hurigana','30','',$$INPUT{'hurigana'}); # ふりがな $TEXT{'yuubin'} = &gen_textbox('yuubin','10','',$$INPUT{'yuubin'}); # 郵便番号 $TEXT{'address'} = &gen_textbox('address','50','',$$INPUT{'address'}); # 住所 $TEXT{'tel'} = &gen_textbox('tel','30','',$$INPUT{'tel'}); # tel $TEXT{'fax'} = &gen_textbox('fax','30','',$$INPUT{'fax'}); # FAX $TEXT{'email'} = &gen_textbox('email','40','',$$INPUT{'email'}); # E-mail $TEXT{'renraku'} = &gen_radio('renraku',\%renraku,$$INPUT{'renraku'}); # ご連絡方法 $TEXT{'time'} = &gen_textbox('time','30','',$$INPUT{'time'}); # ご連絡可能時間帯 $TEXT{'content'} = &gen_radio('content',\%content,$$INPUT{'content'}); # お問合せ内容 $TEXT{'text'} = &gen_textarea('text','50','5',$$INPUT{'text'}); # 通信欄 $TEXT{'button1'} = ''; $TEXT{'button2'} = ''; return %TEXT; } ####################################################################### # エラーメッセージ生成 ####################################################################### sub gen_err_msg { my $msg1 = shift; my $msg2 = shift; my $information; if ($msg1) { $information .= qq($msg1
$msg2

); } return $information; }