メール送受信テストシステム(2)
メール送信部のプログラム
testmail.cgi
----
#!/usr/local/bin/perl
# 画面表示
print "Content-type: text/html \n\n";
print "< html > \n";
print "< head > < title > Test send mail< /title > < /head > \n";
print "< body > \n";
print "< h1 > Test send mail< /h1 > \n";
print "< hr / > ";
use CGI;
use Jcode;
# 引数を取得する
$input_data = new CGI;
$count = $input_data- > param('count');
$to = 'hogehoge@japan.com';
# 送信前処理
$mailname = jcode($name)- > jis;
# ループ
for( $i=1 ; $i< =$count ; $i++) {
#######################
# 実行時の日時を取得
($sec, $min, $hour, $day, $mon, $year, $wdy, $yday, $isdst) = localtime(time);
@youbi = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
$year += 1900;
$mon++;
$time = "$year-$mon-$day, @youbi[$wdy], $hour:$min:$sec";
#######################
# Send mail
open (MAIL, "| /usr/lib/sendmail -t");
print MAIL "To: $to \n";
print MAIL "Subject: $time \n";
print MAIL "Content-Type: text/plain; \n\n";
print MAIL "test mail \n";
close(MAIL);
print "現在の日時は $year-$mon-$day, @youbi[$wdy], $hour:$min:$sec です。< br \/ > \n";
print "ただいま $i 回メールを送信しました。 < br \/ > \n";
#######################
# インターバル 5分
sleep(300);
}
# 画面表示
print "Test mail は $count 回繰り返されました。 \n";
print "< /body > < /html > \n";
exit;
----
しかし、現状借りていますレンタルサーバーにて動作テストを
するとタイムアウトを起こしてしまいます。(300秒の待ちは無理)
当たり前と言えば当たり前ですが、、、
たぶんサーバーの設定で"keep alive"は100sあたりになっているので
しょう。次なる手段として、自宅サーバーにPostfixなるメールサービスを
導入して、Perlスクリプトをcronで自動実行させてみようかと
考えています。
--参考図書
CGI/Perlハンドブック 第3版









