メールフォーム その2
HTMLファイルの埋め込み型です。
mailform02.cgiを作成して下のソースをそれぞれ貼り付けます。
mailform02.cgiのパーミションを755に変更します。文字コード変換には、 jcode.plライブラリを使用します。
ソース mailform02.cgi
#!/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
<html>
<head>
<title>メールフォーム</title>
<head>
<form method="post" action="mailform02.cgi">
<input type=hidden name=mode value="submit">
発信者 (メールアドレス): <br/>
<input type="text" name="from">
<br/>
Subject(題名) :
<br/>
<input type="text" name="subject">
<br/>
メール本文 :
<br/>
<textarea name="comment" rows=5 cols=30>
</textarea>
<p>
<input type="submit" value="送る">
</p>
</body>
<html>
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 ""))
{
&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 "<html>\n";
print "<body>\n";
print "<b>$_[0]</b><br>\n";
print "$_[1]\n";
print "</body></html>\n";
exit;
}
#送信完了表示
sub end {
print "Content-type: text/html\n\n";
print "<html>\n";
print "<body>\n";
print "<b>送信完了</b><br>\n";
print "</body></html>\n";
exit;
}
__END__
|
