メール送信(メールフォーム, sendmail)
#! /usr/local/bin/perl use Jcode; $SENDMAIL = '/usr/sbin/sendmail'; # sendmailパス $TO = '****@*******.***'; # メール宛先 $TONAME = '○○○○'; # メール宛名 print qq(Content-type: text/html; charset=Shift_JIS\n\n); print <<END; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>メールフォーム(sendmail)</title></head> <body style="text-align:center"> <table style="width:80%;border:1px solid #f93"> <tr><th style="padding:5px;background:#fc9">メールフォーム</th></tr> <tr> <td style="padding:20px"> END if($ENV{'REQUEST_METHOD'} eq 'POST') { loadForm(); # フォームデータ取得 # sendmailでメール送信 $ERROR = sendMail($TONAME, $TO, $FORM{'name'}, $FORM{'email'}, $FORM{'subj'}, $FORM{'msg'}); if($ERROR) { print qq(<div style="color:red;font-weight:bolder">エラー:$ERROR</div>\n); printForm(); } else { print <<" END"; <div style="font-weight:bolder">下記の内容でメールを送信しました。</div><br> 名前: $FORM{'name'}<br><br> メール: $FORM{'email'}<br><br> 題名: $FORM{'subj'}<br><br> 本文: $FORM{'msg'}<br><br> END } } else { printForm(); } print <<END; </td> </tr> </table> </body> </html> END exit; #============================================================================== メールフォーム sub printForm { print <<" END"; <form action="$ENV{'SCRIPT_NAME'}" method="post"> 名前<br> <input type="text" name="name" value="$FORM{'name'}" size="50"><br> <br> メールアドレス<br> <input type="text" name="email" value="$FORM{'email'}" size="50"><br> <br> 題名<br> <input type="text" name="subj" value="$FORM{'subj'}" size="50"><br> <br> 本文<br> <textarea name="msg" rows="10" cols="50">$FORM{'msg'}</textarea><br> <br> <input type="submit" value="送 信"> <input type="reset" value="リセット"> </form> END } #============================================================================== sendmailでメール送信 sub sendMail { my $toname = $_[0]; my $to = $_[1]; my $name = $_[2]; my $email = $_[3]; my $subj = $_[4]; my $msg = $_[5]; if(!$name or !$email or !$subj or !$msg) { return("全ての項目に入力してください。"); } else { $toname = Jcode::convert($toname, 'jis'); # MIMEエンコード $toname = Jcode::mime_encode([\$toname]); $name = Jcode::convert($name, 'jis'); $name = Jcode::mime_encode([\$name]); $subj = Jcode::convert($subj, 'jis'); $subj = Jcode::mime_encode([\$subj]); $msg = Jcode::convert($msg, 'jis'); # sendmailでメール送信 # open(MAIL, "| $SENDMAIL -t") or return("SENDMAILエラー"); # print MAIL "To: $toname <$to>\n"; # print MAIL "From: $name <$email>\n"; # print MAIL "Subject: $subj\n"; # print MAIL "Mime-Version: 1.0\n"; # print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n\n"; # print MAIL $msg; # close MAIL; } return; } #============================================================================== フォームデータ取り込み sub loadForm { my ($query, $pair); read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); foreach $pair (split(/&/, $query)) { my ($key, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key} = $value; } }
〔 実行する 〕