#!/usr/local/bin/perl #===================================================================== # 題目 #===================================================================== # 名 称: wwwmail Ver3.03 # 最終更新: 2000年8月14日 # 作 成 者: とほほ # 種 別: フリーソフト # 再 配 布: 再配布可能(許可不要) # 動作OS: UNIX系Webサーバー # 設置方法: http://wakusei.cplaza.ne.jp/twn/wwwmail.htm #===================================================================== # カスタマイズ #===================================================================== # ★ perlのパス名 # このファイルの先頭の1行を、あなたが利用するサーバーにインストー # ルされた perl コマンドのパス名に応じて変更してください。例えば、 # 私が加入している BIGLOBE では、#!/usr/mesh/bin/perl となります。 # 解らない場合は、プロバイダやサーバの管理者にお問い合わせください。 # 「#!」の前には、空文字や空行がはいらないようにしてください。 # ★ 送信先メールアドレス # $mailto = 'abc@xxx.yyy.zzz'; のようにあなたのメールアドレスに # 書き換えてください。 $mailto = ''; # ★ サブジェクト(件名) # 送信されるメールのサブジェクトを指定してください。 $subject = 'MAIL FROM WWWMAIL'; # ★ メール送信コマンド # このコマンドが存在しない場合は、このスクリプトは動作しません。また、 # 存在していても、メール送信の設定が行われていない場合があります。詳 # 細はプロバイダやサーバーの管理者にお問い合わせください。 $sendmail = '/usr/lib/sendmail'; # ★ 漢字コード変換ライブラリ # ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/ から入手可能です。 # wwwmail.cgi と同じディレクトリに置いてください。 $jcode = 'jcode.pl'; # ★ MIMEコード変換ライブラリ # http://www.cc.rim.or.jp/~ikuta/mime_pls/ から入手可能です。 # wwwmail.cgi と同じディレクトリに置いてください。 $mimew = 'mimew.pl'; # ★ 送信結果メッセージ(ヘッダ) # < メール送信結果

メール送信結果


下記のメールを送信しました。 ありがとうございました。
END_OF_DATA # ★ 送信結果メッセージ(フッタ) # < [戻る] END_OF_DATA #==================================================================== # 自己診断機能。 #==================================================================== # メール送信がうまく動作しない時に、 # http://〜/〜/wwwmail.cgi?test の形式で呼び出してください。 if ($ARGV[0] eq "test") { print "Content-type: text/html\n"; print "\n"; print "\n"; print "\n"; print "WwwMail自己診断\n"; print "\n"; print "\n"; print "CGIは正常に動作しています。
\n"; unless (-x $sendmail) { print "

$sendmail を実行できません。
\n"; } unless (-f $jcode) { print "

$jcode がありません。
\n"; } unless (-f $mimew) { print "

$mimew がありません。
\n"; } print "\n"; print "\n"; exit 0; } #==================================================================== # 本体 #==================================================================== # # ライブラリの呼び出し # require $jcode; require $mimew; # # 入力値を読み取る # if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'}); } else { $query_string = $ENV{'QUERY_STRING'}; } @a = split(/&/, $query_string); foreach $x (@a) { ($name, $value) = split(/=/, $x); $name =~ tr/+/ /; $name =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*name, "jis"); $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; $value =~ s/[\r\n]+/\n/g; &jcode'convert(*value, "jis"); if ($FORM{$name} eq "") { $FORM{$name} = $value; $FORM[$cnt++] = $name; } else { $FORM{$name} .= (" " . $value); } } # # EMAILが指定されていなければ、(unknown)とする。 # if ($FORM{'EMAIL'} eq "") { $FORM{'EMAIL'} = "(unknown)"; } # # メールヘッダを作成する # { &jcode'convert(*subject, "jis"); $mailhead = "To: $mailto\n"; $mailhead .= "From: $FORM{'EMAIL'}\n"; $mailhead .= "Subject: $subject\n"; $mailhead .= "\n"; } # # メールボディを作成する # { for ($i = 0; $i < $cnt; $i++) { $mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n"; } # "." のみの行は ". " に変換する。 # 2回繰り返さないと、2行連続で "." のみの行に対応できない # "." を ".." に変換する処理が一般的だそうだが、あえて、 # "." を ". " に変換する。 $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; $mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g; } # # メールを送信する # if (-x $sendmail) { unless (open(OUT, "| $sendmail $mailto > /dev/null")) { &errexit("メールの送信に失敗しました。"); } unless (print OUT &mimeencode($mailhead)) { &errexit("メールの送信に失敗しました。"); } unless (print OUT $mailbody) { &errexit("メールの送信に失敗しました。"); } close(OUT); } else { &errexit("$sendmailがありません。"); } # # ブラウザ画面に送信結果を書き出す # { &jcode'convert(*header, "jis"); &jcode'convert(*footer, "jis"); $mail = $mailhead . $mailbody; &jcode'convert(*mail, "euc"); $mail =~ s/&/&/g; $mail =~ s/"/"/g; $mail =~ s//>/g; $mail =~ s/\n/
/g; &jcode'convert(*mail, "jis"); print "Content-type: text/html\n"; print "\n"; print "$header\n"; print "$mail\n"; print "$footer\n"; } # # エラーメッセージを出力して終了 # sub errexit { $msg = "\n"; $msg .= "\n"; $msg .= "メール送信結果\n"; $msg .= "\n"; $msg .= "\n"; $msg .= "メールの送信に失敗しました。\n"; $msg .= "ブラウザの [戻る] ボタンで戻ってください。\n"; $msg .= "\n"; $msg .= "\n"; &jcode'convert(*msg, "jis"); print "Content-type: text/html\n"; print "\n"; print "$msg\n"; exit(0); }