#! /usr/local/bin/perl # # メッセージファイルのメール送信   # # id=msgsend.cgi # # update=97.10.02 # 日本語コード変換ライブラリ(v2.0)の指定 # (このCGIと同じディレクトリに設置する場合は、'./jcode.pl'でよい) # &ReadParse命令で、$in{ }の変数にフォーム入力データが格納される require 'cgi-lib.pl'; require 'jcode.pl'; &ReadParse; # 設置するURLを設定 $reload = 'http://www0.kumagaya.or.jp/cgi-bin/users/chichibu/msgsend.cgi'; $file = "/dialup/chichibu/cgi-bin/msg.txt"; $bkhmpg = "http://www.kumagaya.or.jp/~chichibu/cgi.html"; $sendmail = '/usr/lib/sendmail'; # メールの送り元 $myaddress = 'chichibu@po.kumagaya.or.jp'; #################################### # # # メインルーチン(処理の分岐) # # # #################################### # 全体の流れを決定する(actionやpwdはフォーム入力されたデータを格納する名前) # action=check --> フォーム入力データのチェック処理へ # その他 --> フォーム入力画面へ if ($in{'action'} eq 'first') { &first; } elsif ($in{'action'} eq 'check') { ✓ } elsif ($in{'action'} eq 'send') { &sendmail; } else { &first; } ############################################# # # # 最初に表示する画面          # # # ############################################# sub first { print "Content-type: text/html\n\n"; print < メッセージファイルのメール送信 10/1

メッセージファイルのメール送信


EOM print 'メッセージファイルの更新で登録したデータを送信します。'."\n"; print '

'; print 'これは指定したアドレスにデータを送信する練習です。'."\n"; print '
'; print 'スクリプト内に固定化されたメッセージではなく、ファイルに登録したデータ'."\n"; print '
'; print 'を自由に更新してそれを送るのが目的です。'."\n"; print '

'; print ''."\n"; print '但し、このようにメールアドレスを入力してデータを送るという処理は'."\n"; print '
'; print 'セキュリティーホールにもなる可能性がありますのでこ注意ください。'."\n"; print '
'; print '従いまして、ここのCGIでは実際に送信は致しません。'."\n"; print '
'."\n"; print '

'; print '※インターネット社会は車と同じ、規則がありそれを守ることで平和となる。'."\n"; print '

'; print '
' . "\n"; print '' . "\n"; print 'メールアドレスは?
' . "\n"; print '

'; print '

' . "\n"; print '

'. "\n"; } ########################################## # # # 入力されたデータのチェックルーチン # # # ########################################## sub check { # なにも入力がない場合 if ($in{'email'} eq "" ) { &error(2); } # 英数字と@と.と_と-(大文字と小文字の違いを無視するiフラグ) if ($in{'email'} =~ /[^a-z0-9@._-]/i) { &error(1); } # メールアドレスが入力されたとき1つの@とその後ろに.が含まれているばOKでそうでないならエラー if ($in{'email'} ne "") { if (!($in{'email'} =~ /.*\@.*\..*/)) { &error(1); }} # メールアドレスが短すぎる場合 if ($in{'email'} ne "") {if (length($in{'email'}) < 6) { &error(3); }} # チェック通過 &kakunin; } ############################################# # # # チェックエラー表示画面ルーチン      # # # ############################################# sub error { # &error(xx); で呼び出されたルーチンは、()内の数字が $error に代入される。 $error = $_[0]; if ($error eq "0") { $error_msg = 'メッセージファイルがない、またはOPENできない'; } elsif ($error eq "1") { $error_msg = 'メールアドレスが正しく入力されていません。'; } elsif ($error eq "2") { $error_msg = 'メールアドレスが入力してありません。'; } elsif ($error eq "3") { $error_msg = 'メールアドレスが短すぎます。'; } print "Content-type: text/html\n\n"; print 'メッセージファイル送信の入力エラー' . "\n"; print '' . "\n"; print '

アドレスの入力で下記のエラーが発生しました

' . "\n"; print "$error_msg\n"; print '
'; # リロードでもどると入力データが消えてしまうので print 'ブラウザ画面の戻るをクリックする'."\n";; print '
'; print '入力の確認表示

' . "\n"; print '
'; print 'action: '.$in{'action'}.''."\n"; print '
'; print 'email: '.$in{'email'}.''."\n"; print '
'; print '

' . "\n"; exit; } ############################################# # # # 入力データ確認表示画面ルーチン     # # # ############################################# sub kakunin { print "Content-type: text/html\n\n"; print < メール入力データの確認

入力データの確認


EOM print "アドレス:$in{'email'}"."\n"; print '
'; # 送信する print '
' . "\n"; print '' . "\n"; # 入力データの受け渡し print '' . "\n"; print ''."\n"; print "
\n"; # 取消する print '
' . "\n"; print '' . "\n"; print ''."\n"; print "
\n"; print "\n"; print "\n"; exit; } ############################################# # # # メール送信ルーチン           # # # ############################################# sub sendmail { # ファイルから登録データを読む if (!open(DATA,"$file")) { &error(0); } @msg = ; close(DATA); # 変数$msgに改行コード付きで連結する $msg=""; foreach $key (@msg) { $msg=$msg.$key; } $message = <\n"; print "\n"; print "msgsend.cgi \n"; print "\n"; print "\n"; print '送信を完了しました。メールの受信を起動して確認してください'."\n"; print '

最初の画面に戻る'; print "\n"; print "\n"; }