- ベストアンサー
Perlでメールフォーム複数のアドレスに配置するには?
- Perlを使用してメールフォームを作成し、複数のアドレスにメールを配置したい場合、どのようにPGを変更すれば良いでしょうか?
- サンプルのPerlフォームメールの設定を参考に、メール送信のタイトル、背景色、文字色、戻り先のURL、CGIプログラムの設置場所を指定し、受信メールアドレス(送信先)を複数のアドレスに設定します。
- さらに、必要な場合はjcode.plの場所とsendmailの場所も設定することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>あとは確認のサブルーチンなんで省略しました。 実際の送信ルーチンは &sendmail; だと思われます。 >メールを複数のアドレスに配置したいのですが 配置とはなんでしょうか? 送信したいのですか? 相手に伝わらないと正しい質問は帰ってきません。 複数送信したいのでしたら、送信先を配列に入れてforeachで回してやればできますが、こんな説明では分からないのでご質問なさっているのですよね?
その他の回答 (2)
- -ROM
- ベストアンサー率35% (33/93)
せっかくたくさん貼り付けられたのですが、肝心の送信部分が抜けていますね。 最初の質問文の略語や No. 1 の方の回答に対するお返事を拝見するに、ここにおいて質問されながらも、それとは裏腹に独自判断されている部分が多分にあるように見受けられます。
お礼
回答ありがとうございます。 欠けている部分はたぶんこれです。 # メール送信のサブルーチン sub sendmail { use MIME::Base64 (); $en_subject = MIME::Base64::encode($subject); chomp($en_subject); $en_subject = "=?ISO-2022-JP?B?$en_subject?="; open(MAIL,"| $sendmail -t"); print MAIL "Errors-To: $mailto\n"; print MAIL "To: $mailto\n"; print MAIL "From: $email\n"; print MAIL "Reply-To: $mailto\n"; print MAIL "Subject: $en_subject\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n"; print MAIL "$msg\n\n"; close(MAIL); 質問内容自体に無理があるのは承知しています。 OKWAVEで解決できる問題ではないですね。
- mflow
- ベストアンサー率63% (42/66)
natwoさんの現在のperlの知識では、この掲示板のやり取りだけでスクリプトを改変し、複数アドレスへのメール配信を達成するのは困難であると思われます。 そのため、Gmailを利用した別解答を示します。(参考ソースでは回答不可能です) まず、gmailのアカウントを取得します。 http://mail.google.com/ perlスクリプトの送信先に取得したgmailのE-Mailアドレスを設定します。 で、Gmalにログイン後、以下の手順を実行します。 設定(右上)→フィルタ→新しいフィルタを作成 →件名に# サンプルのタイトルのところで設定した値を入力 →次のステップ→次のアドレスに転送をチェックし送信先E-mailアドレスを入力→フィルタを作成 これを送信したいアドレス分だけ繰り返してください。 これで複数アドレスに送信できるようになるかも知れません(スクリプトの全容がわからないため断言は不可能なんです)。
お礼
了解でーす。そんぐらいはわかっているんですけど、 字数の制限上そこまで書けない…。 いけるとこまで以下。 $REMOTE_HOST = $ENV{'REMOTE_HOST'}; if($REMOTE_HOST==''){ $REMOTE_HOST = $ENV{'REMOTE_ADDR'}; } if($REMOTE_HOST eq $ENV{'REMOTE_ADDR'}){ $REMOTE_HOST = gethostbyaddr(pack('C4',split(/\./,$REMOTE_HOST)),2) || $REMOTE_ADDR; } # 日時を取得 @local_time = localtime(time); $local_time[5] = sprintf("%02d", $local_time[5]+1900); $local_time[4] = $local_time[4]+1; $local_time[2] = sprintf("%02d", $local_time[2]); $local_time[1] = sprintf("%02d", $local_time[1]); $local_time[0] = sprintf("%02d", $local_time[0]); $time = "$local_time[5]\/$local_time[4]\/$local_time[3] $local_time[2]\:$local_time[1]\:$local_time[0]秒"; # フォームデータをデコード if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'sjis');
補足
3番目のソース あとは確認のサブルーチンなんで省略しました。 if($name eq 'proc'){ $proc = $value; } elsif($name eq 'email'){ $email = $value; } elsif($name eq 'who'){ $who = $value; } elsif($name eq 'birth'){ $birth = $value; } elsif($name eq 'subject'){ $subject = $value; } elsif($name eq 'place'){ $place = $value; } elsif($name eq 'company'){ $company = $value; } elsif($name eq 'c_place'){ $c_place = $value; } elsif($name eq 'tel'){ $tel = $value; } elsif($name eq 'body'){ $value =~ s/\r\n/\n/g; $value =~ s/\r/\n/g; $body = $value; } } } # 入力内容をチェック・編集・送信 if($proc eq 'send'){ if($email eq ''){ $error = "メールアドレスが設定されていません。"; } if($who eq ''){ $error = "$error お名前が設定されていません。"; } if($subject eq ''){ $error = "$error 題名が設定されていません。"; } if($body eq ''){ $error = "$error 本文が設定されていません。"; } if($url eq ''){ $url = "なし"; } if($error eq ''){ $msg = "========================================\n"; $msg = "$msg 差出人:$who (email:$email)\n"; $msg = "$msg 生年月日:$birth\n"; $msg = "$msg 題名:$subject\n"; $msg = "$msg 住所:$place\n"; $msg = "$msg 会社:$company\n"; $msg = "$msg 会社の所在地:$c_place\n"; $msg = "$msg TEl/FAX:$tel\n"; $msg = "$msg========================================\n\n"; $msg = "$msg- - - - - - 以下、本文 - - - - - -\n"; $msg = "$msg$body\n"; $msg = "$msg- - - - - - -ここまで- - - - - - -\n\n"; $msg = "$msg========================================\n"; $msg = "$msg 送信年月日:$time\n"; $msg = "$msg ブラウザ:$ENV{HTTP_USER_AGENT}\n"; $msg = "$msg ホスト:$REMOTE_HOST\n"; &sendmail; } } print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<meta http-equiv=\"content-type\" content=\"text/html; charset=shift-jis\">\n"; print "<title>$mail_title</title>\n"; print "</head>\n"; print "<body bgcolor=\"$bgcolor\" text=\"$text\">\n"; print "<img src =\"../kensyu/a.gif\"alt=\"$n\" height=\"47\"width=\"548\"border=\"0\">\n"; print "<br><br>\n"; if($error ne ''){ &error; }
お礼
OKです。わかりました。ありがとうございます。