#! /usr/bin/perl ################################################################################### # sendmail4flash.cgi # # Version 1.31 # # T.Yoshioka made ################################################################################### # jcode,mimew require './jcode.pl'; $mimer = './mimew.pl'; # sendmailのパス $sendmail = '/usr/sbin/sendmail'; #*** 設定終了 **** # MAIN &dataDecode(); ($date,$dat2) = &get_time; &emailCheck(); &get_host; &sendMail(); print "Content-type: text/plain\n\n"; print 'msg=FINISHED'; exit; #デコード sub dataDecode { my ($query, $pair); if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } foreach $pair (split(/&/, $query)) { my ($key, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack('H2', $1)/eg; &jcode'convert(*value, "sjis", "", "z"); &jcode'h2z_sjis(\$value); $value =~ s/&/&/g; $value =~ s//>/g; $value =~ s/"/"/g; $value =~ s/\r\n/\n/g; $value =~ s/\r/\n/g; $value =~ s/<>/<>/g; if ($key eq 'namae') { $name = $value; } if ($key eq 'mailto') { $mailto = $value; } if ($key eq 'email') { $email = $value; } if ($key eq 'subjectto') { $subjectto = $value; } if ($key eq 'subject') { $subject = $value; } if ($key eq 'body') { $body = $value; } if ($key eq 'bodyto') { $bodyto = $value; } } } # E-Mail書式チェック sub emailCheck { if ($email ne "" && $email !~ /[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) { &printError('emailの書式に誤りがあります'); } } #エラー sub printError { $error = $_[0]; print "Content-type: text/plain\n\n"; #print "msg=error&error_message=$error&"; print "msg=$error"; exit; } #メール送信 sub sendMail { # MIMEエンコード if (-e $mimer) { require $mimer; $subject2 = &mimeencode($subject); $subjectto2 = &mimeencode($subjectto); } else { $subject2 = $subject; &jcode'convert(*subject2,'jis'); $subjectto2 = $subjectto; &jcode'convert(*subjectto2,'jis'); } if ($email ne "" ) { open(MAIL, "| $sendmail -t") || &printError('メールの送信に失敗しました。'); print MAIL "To: $email\n"; print MAIL "From: $mailto\n"; print MAIL "Subject: $subject2\n"; print MAIL "\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Date: $dat2\n\n"; print MAIL "$body"; print MAIL "\n"; close (MAIL); } else { $email = $mailto; } open(MAIL, "| $sendmail -t") || &printError('メールの送信に失敗しました。'); print MAIL "To: $mailto\n"; print MAIL "From: $email\n"; print MAIL "Subject: $subjectto2\n"; print MAIL "\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Date: $dat2\n\n"; print MAIL "$bodyto"; print MAIL "\n"; close (MAIL); } # 時間を取得 sub get_time { $ENV{'TZ'} = "JST-9"; local($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time); local(@w) = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); local(@m) = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); # 日時のフォーマット local($d1) = sprintf("%04d/%02d/%02d(%s) %02d:%02d", $year+1900,$mon+1,$mday,$w[$wday],$hour,$min); local($d2) = sprintf("%s, %02d %s %04d %02d:%02d:%02d", $w[$wday],$mday,$m[$mon],$year+1900,$hour,$min,$sec) . " +0900"; local($d3) = sprintf("%04d%02d%02d",$year+1900,$mon+1,$mday); return ($d1,$d2,$d3); } # ホスト名取得 sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq $addr) { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr; } }