#!/usr/bin/perl #文字コード変換ライブラリ require 'jcode.pl'; #メールソフトまでのパス $sendmail = '/usr/lib/sendmail'; #送信先メールアドレス $mailto = 'yourname@yourdomain.com'; &decode; if ($mode eq 'submit') { &submit; } &html; #htmlを表示 sub html { print <<"HTML"; Content-type: text/html メールフォーム
発信者 (メールアドレス):

Subject(題名) :

メール本文 :

HTML exit; } #デコード処理 sub decode{ read STDIN,$input,$ENV{'CONTENT_LENGTH'}; @pairs = split(/&/,$input); foreach $pair (@pairs) { ($list, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value, 'jis'); $FORM{$list} = $value; } $mode = $FORM{'mode'}; $from = $FORM{'from'}; $subject = $FORM{'subject'}; $comment = $FORM{'comment'}; } sub submit{ #未記入の場合や送信者アドレスに@マークがないとエラー表示 if(($from eq "")||($subject eq "")||($comment eq "")||(!($from =~ /@/)) ) {&error('送信不可','全ての項目を埋めないと送信できません.'); } #メールソフトなんらかの原因で使えない場合エラー表示 if (!(open(MAIL,"| $sendmail -t"))) { &error('送信不可','何らかの原因で送信できません.'); } print MAIL "To: $mailto\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; print MAIL "$comment\n"; close(MAIL); &end; } #エラーメッセージ表示 sub error { print "Content-type: text/html\n\n"; print "\n"; print "\n"; print "$_[0]
\n"; print "$_[1]\n"; print "\n"; exit; } #送信完了表示 sub end { print "Content-type: text/html\n\n"; print "\n"; print "\n"; print "送信完了
\n"; print "\n"; exit; } #__END__