Perlでメールフォーム複数のアドレスに配置するには?

このQ&Aのポイント
  • Perlを使用してメールフォームを作成し、複数のアドレスにメールを配置したい場合、どのようにPGを変更すれば良いでしょうか?
  • サンプルのPerlフォームメールの設定を参考に、メール送信のタイトル、背景色、文字色、戻り先のURL、CGIプログラムの設置場所を指定し、受信メールアドレス(送信先)を複数のアドレスに設定します。
  • さらに、必要な場合はjcode.plの場所とsendmailの場所も設定することができます。
回答を見る
  • ベストアンサー

Perl メールフォーム複数のアドレスに。

メールを複数のアドレスに配置したいのですがPGをどう変更すれば よろしいでしょうか? 参考ソース #!/usr/bin/perl # フォームメール #jcode.plの場所を設定 require "./jcode.pl"; # sendmailの場所を設定 $sendmail = '/usr/lib/sendmail'; # サンプルのタイトル $mail_title = "メール送信サンプル"; # ページの背景色 $bgcolor = "#FFFFFF"; # ページの文字色 $text = "#000000"; # 戻り先のURL $back_url = '***@aaa.co.jp'; # CGIプログラムの設置場所 $cgi_url = "./mail.cgi"; # 受信メールアドレス(送信先) $mailto = '***@aaa.jp';

noname#21798
noname#21798
  • Perl
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

>あとは確認のサブルーチンなんで省略しました。 実際の送信ルーチンは &sendmail; だと思われます。 >メールを複数のアドレスに配置したいのですが 配置とはなんでしょうか? 送信したいのですか? 相手に伝わらないと正しい質問は帰ってきません。 複数送信したいのでしたら、送信先を配列に入れてforeachで回してやればできますが、こんな説明では分からないのでご質問なさっているのですよね?

noname#21798
質問者

お礼

OKです。わかりました。ありがとうございます。

その他の回答 (2)

  • -ROM
  • ベストアンサー率35% (33/93)
回答No.2

せっかくたくさん貼り付けられたのですが、肝心の送信部分が抜けていますね。 最初の質問文の略語や No. 1 の方の回答に対するお返事を拝見するに、ここにおいて質問されながらも、それとは裏腹に独自判断されている部分が多分にあるように見受けられます。

noname#21798
質問者

お礼

回答ありがとうございます。 欠けている部分はたぶんこれです。 # メール送信のサブルーチン 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)
回答No.1

natwoさんの現在のperlの知識では、この掲示板のやり取りだけでスクリプトを改変し、複数アドレスへのメール配信を達成するのは困難であると思われます。 そのため、Gmailを利用した別解答を示します。(参考ソースでは回答不可能です) まず、gmailのアカウントを取得します。 http://mail.google.com/ perlスクリプトの送信先に取得したgmailのE-Mailアドレスを設定します。 で、Gmalにログイン後、以下の手順を実行します。 設定(右上)→フィルタ→新しいフィルタを作成 →件名に# サンプルのタイトルのところで設定した値を入力 →次のステップ→次のアドレスに転送をチェックし送信先E-mailアドレスを入力→フィルタを作成 これを送信したいアドレス分だけ繰り返してください。 これで複数アドレスに送信できるようになるかも知れません(スクリプトの全容がわからないため断言は不可能なんです)。

noname#21798
質問者

お礼

了解でーす。そんぐらいはわかっているんですけど、 字数の制限上そこまで書けない…。 いけるとこまで以下。 $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');

noname#21798
質問者

補足

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; }

関連するQ&A

  • webform.cgiによる複数メール送信

    以下のwebformで、受信先メールアドレスを2つ設定したいのですが、 一つ目のメールアドレスの後に、「,」で区切っても、 「スペース」あけても、一つ目のメールアドレスだけに送られてくるだけで、2つ目のメールアドレスには送られてきません・・・このformでどのように設定したらいいのでしょうか? まったくの初心者です・・お願いします。。 #!/usr/bin/perl ########## #自動返信、ヘッダー・フッター、クロネコ(line:358) ########## #■日本語コード変換ライブラリ require 'jcode.pl'; require 'html.pl'; #■SENDMAILの設定 $sendmail = '/usr/lib/sendmail'; #■受信先メールアドレス $mailto = '**********@******.**.**'; ←ここにもう一つ追加したいんです。 #■自動返信 $auto_res = "on";#↓$mailcheck = 0;必須 #■名称 $title = 'ご送信フォーム'; ________________________________________________________________

    • ベストアンサー
    • CGI
  • sendmailが上手く行きません。

    CGIに詳しい方、教えてください。 HP上にサンプル応募フォームを作って、アンケート形式で答えてもらい、その結果をメールで私に送ってもらう(sendmail)の件です。 以下のようにCGIを記入しています。 フォームに記入して「送信」すると、「送信は完了しました」というメッセージは出るのですが、一向にメールが届きません。 どこか記述がおかしいのでしょうか? なお、HPのFAQには Sendmailのパスは /usr/sbin/sendmail です。 と書いてあったので、それにあわせたつもりです。 よろしくお願いします。 ------------------------------------------- #!/usr/bin/perl $ver = 'PostMail v1.01'; #------------# # 基本設定 # #------------# # メールソフト種類 # 1 : sendmail (UNIX) # 2 : blatj (NT) $prog_type = 1; # コード変換ライブラリ require './jcode.pl'; # メールソフトまでのパス # → sendmailの例: /usr/lib/sendmail # → blatjの例: c:\www\mail\blatj.exe $mailprog = '/usr/sbin/sendmail'; # 送信先メールアドレス $mailto = '私のメールアドレス'; # 送信前確認 # 0 : no # 1 : yes $preview = 1; # メールタイトル $subject = "サンプル応募メール"; # ホスト名取得モード # 0 : $ENV{'REMOTE_HOST'}で取得できる場合 # 1 : gethostbyaddr関数で取得できる場合 $get_remotehost = 0; # スクリプト名 $script = './sample.cgi'; # 一時ファイル(blatjの場合のみ) $tempfile = "./$$\.tmp"; # 送信後の戻り先 $back = 'トップページのURL'; # method形式 (0=no 1=yes) $method = 'POST'; # bodyタグ $body = '<body bgcolor="#F1F1F1" text="#000000">'; ------------------------------------------

    • 締切済み
    • CGI
  • CGI メールフォームからBCCのアドレスにメールが送信できない(Perl)

    初心者で簡単なメールフォームを作成しております。 宛先となる支店を選択後、メールのTOにその支店のアドレスが入り、メールは受信できます。同時にBCCにも一人のアドレスを入力してメールを送信したいのですが、BCCにはメールが届きません。 以下に抜粋したソースを記述しますので、どなたかご教授願います。 --------------------- HTML 部分 ------------------------------ <form action="./cgi/●●/sendmail.cgi" name="myform" method="POST"> <table> <tr><td>あなたのメールアドレス</td> <td><input type="text" name="email" size="60" maxlength="60"></td> </tr> <tr><td>お問合せ先の支店を選択</td> <td><select name="address"> <option value="" selected>選択してください</option> <option value="aaaaa@domain.jp">A支店</option> <option value="bbbbb@domain.jp">B支店</option> <option value="ccccc@domain.jp">C支店</option> </select> </td> </tr> <tr> <td><input type="submit" name="submit" value="送 信"></td> <td><input type="reset" name="reset" value="キャンセル"></td> </tr> </table> </form> --------------------- cgi 部分 ------------------------------- require '../cgi-lib.pl'; require '../jcode.pl'; $sendmail = '/usr/sbin/sendmail'; $bcc_address = 'bccbcc@gmail.com'; $email = $in{'email'}; $address = $in{'address'}; &jcode'convert(*email,'sjis'); &jcode'convert(*address,'sjis'); $message = <<EOF; Subject: 質問 From: $email Errors-to: $email Reply-To: $email ------------------------------------------------------------- 質問内容 ------------------------------------------------------------- [お客様のメールアドレス] $email EOF open(MAIL,"|$sendmail $address"); print MAIL $message; print MAIL "BCC: $bcc_address\n"; close(MAIL); print <<EOF; Content-Type: text/html <html> <head> <title>送信しました</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> ●お客様のメールアドレス $email<br> </body> </html> EOF

  • CGI メールフォームからBCCのアドレスにメールが送信できない(Perl)

    初心者で簡単なメールフォームを作成しております。 宛先となる支店を選択後、メールのTOにその支店のアドレスが入り、メールは受信できます。同時にBCCにも一人のアドレスを入力してメールを送信したいのですが、BCCにはメールが届きません。 以下に抜粋したソースを記述しますので、どなたかご教授願います。 --------------------- HTML 部分 ------------------------------- <form action="./cgi/sendmail.cgi" name="myform" method="POST"> <table> <tr><td>あなたのメールアドレス</td> <td><input type="text" name="email" size="60" maxlength="60"></td> </tr> <tr><td>お問合せ先の支店を選択</td> <td><select name="address"> <option value="" selected>選択してください</option> <option value="aaaaa@domain.jp">A支店</option> <option value="bbbbb@domain.jp">B支店</option> <option value="ccccc@domain.jp">C支店</option> </select> </td> </tr> <tr> <td><input type="submit" name="submit" value="送 信"></td> <td><input type="reset" name="reset" value="キャンセル"></td> </tr> </table> </form> --------------------- cgi 部分 -------------------------------- require '../cgi-lib.pl'; require '../jcode.pl'; $sendmail = '/usr/sbin/sendmail'; $bcc_address = 'bccbcc@gmail.com'; $email = $in{'email'}; $address = $in{'address'}; &jcode'convert(*email,'sjis'); &jcode'convert(*address,'sjis'); $message = <<EOF; Subject: 質問 From: $email Errors-to: $email Reply-To: $email -------------------------------------------------------------- 質問内容 -------------------------------------------------------------- [お客様のメールアドレス] $email EOF open(MAIL,"|$sendmail $address"); print MAIL $message; print MAIL "BCC: $bcc_address\n"; close(MAIL); print <<EOF; Content-Type: text/html <html> <head> <title>送信しました</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> ●お客様のメールアドレス $email<br> </body> </html> EOF

    • ベストアンサー
    • Perl
  • はじめまして、レンタルサーバーでCGI(sendmail)に苦戦中です

    はじめまして、レンタルサーバーでCGI(sendmail)に苦戦中です 皆さんの知恵を教えてください 現在の状況  サーバー : 大塚商会 アルファメール         新Webに変更済み(CGI可能) 作り方として、直接CGIから実行せず、htmlからメールフォームを表示して そして、sendmail.cgiを実行する形式にしました 参考として ttp://www.site-cooler.com/kwl/cgi/5.htm を手本とさせていただきました 上記のファイルをダウンロードして、必要な箇所を変更しました   ・sendmail     パス:/usr/sbin/sendmail   ですが、なぜか…sendmail.htmは表示できて、送信ボタンを押すとエラーになります   「 internal Server Error 」 です 色々模索中なのですが、全然、解決の目処が立っておりません 模索中なのは  ●パーミッション : アルファメールでは「700」が推進とあったので700にしてみたら   sendmail.htmすら、動かず、755に変更しました   とりあえず、メールフォーム(htm)は表示されます  ●sendmail.cgiは、755・700とも動きません  ●CGIの動作環境は、     ttp://www.alpha-mail.jp/support/server_info/pg/cgi.html   です 下記のように変更しました ------------------------------------------------------------------ #!/usr/bin/perl # 初期設定 -----------------------------------------------# # # sendmailへのパス (変更済み) # $sendmail = '/usr/sbin/sendmail'; # # jcode.plへのパス # $jcode = './jcode.pl'; # # メールの送付先 # $to = 'QQQQQQQ@QQQQQQ.co.jp'; # # メールの題名 # $subject = 'CGIメール送信サンプル'; # # 確認ページより戻るでリンクされるURLを指定 # $back = 'XXX://XXX.XXXXX.XXXX/'; # # 呼出し元。チェックする時はhttpから始まるURLを指定 # $referrer = ''; --------------------------------------------------------- どうかアドバイスをお願いします

    • ベストアンサー
    • CGI
  • メールフォームを2つ設置するには

    違う項目のメールフォームを2つ設置するため 下記のように作りました。 1、CGIフォルダの中にmail.cgiとjcode.plが入っている 2、CGIフォルダの中にmail2.cgiとjcode.plが入っている 1のフォームは送受信できるのですが、 2のフォームで送信すると1のフォームを呼び出してしまいます。 CGI2フォルダを作り送信するのも試しましたが、同じ結果でした。 jcode.plの記述は変えていません。 2のフォームで1のフォームが呼び出される原因について ご教授をお願い致します。

    • ベストアンサー
    • CGI
  • Perl/CGIについて

    #!/usr/bin/perl use CGI; $cgi = new CGI(); $from = $cgi->param('from'); $namae = $cgi->param('namae'); $naiyou = $cgi->param('naiyou'); print "Content-type: text/html\n\n"; # 設定 $sendmail = '/usr/lib/sendmail'; $jcode = './jcode.pl'; $to = 'ha***@***.ne.jp'; #$from = ''; $subject ='名鉄と地下鉄の直通運転'; # 文字コードライブラリの読み込み require $jcode; # メール送信 &jcode'convert(*subject,'jis'); open(MAIL,"| $sendmail -t"); # ヘッダ情報出力 print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; # 本文出力 print MAIL " $namae\n\n"; print MAIL " $naiyou\n"; close(MAIL); #確認表示 print " $namae\n"; print " $naiyou\n"; print "メールを送信しました\n"; end #確認表示の所で表示が改行されない。

    • ベストアンサー
    • Perl
  • 送受信が出来ないメールフォーム

    メールフォームの送信ボタンを押すと Internal Server Errorの画面になり、送受信が出来ません。 jcode.plとcgi-lib.plは書き直していません。 多分form.cgiの書き方が何か違うのだと思います。 下記がform.cgiの中身です。 #!/usr/bin/perl require 'cgi-lib.pl'; require 'jcode.pl'; &ReadParse(*formdata); $subject = "$formdata{'subject'}"; $name = "$formdata{'name'}"; $email = "$formdata{'email'}"; $email = "$formdata{'dayl'}" $12 = "$formdata{'12'}"; $13 = "$formdata{'13'}"; $to = '△@yahoo.co.jp'; $subject = 'メール'; &jcode'convert(*subject,'jis'); open(MAIL, "| /usr/sbin/sendmail -t"); print MAIL "To: $to\n"; print MAIL "From: $email\n"; print MAIL "Content-Type: text/plain;\n\n"; print MAIL "件名:\n$subject\n\nお名前:\n$name\n\nメールアドレス:\n$email\n\n生年月日:\n$day\n\n資料:\n$12\n\n担当者名:\n$13\n\nご相談内容:\n$message\n"; close(MAIL); print "Location: http://△.sakura.ne.jp/12.html\n\n"; exit; 初心者にも分かる様にどなたかご教授をお願いします。 print "Location: http://△.sakura.ne.jp/12.html\n\n"; 部分の12.htmlは送信後に表示するページです。

    • 締切済み
    • CGI
  • フォームメールスクリプト

    既に、ISPの方にフォームメールページを有料で作成して頂いています。 入力項目チェック及び確認機能つきの高度な内容であり、ホスト側のCGIフォルダには、次の主要なファイルが、あります。 (1)Formmail.pl Matt Wrigh氏のスクリプトです。(http://www.scriptarchive.com/formmail.htmlご参照) 書き換えされているのは、冒頭の 1.# Send E-Mail &send_mail; 2.# Return HTML Page or Redirect User &return_html; の部分のみです。 (2)sendmail.asp(以下のような内容で、一切書き換えられた部分は、ありません。) <% dim mailFrom '送信元アドレス dim mailTo '送信先アドレス dim mailCc '送信先Cc dim mailBcc '送信先Bcc dim mailSubject 'メール件名 dim mailBody 'メール本文 (略) (3)cgi-lib_pl.txt(書き換えられた箇所はないと思われます。どのような機能を有するのかさえわかりません。) # Perl Routines to Manipulate CGI input # cgi-lib@pobox.com # $Id: cgi-lib.pl,v 2.17 1998/05/14 22:39:23 brenner Exp $ (4)xxx.asp(xxxが、既にフォームメール設置のウェブページです。) <!--#include file="sendmail.asp"--> <!--#include file="function.asp"--> <% '#################################################### '# システム用変数 '#################################################### dim PostState (略) 今回、自分で別のフォームメールページ(別のメールアドレスで)を作成しようとしましたが、うまくいきません。 ISPの方に聞こうかとも思いましたが、当然ですが、あまり教えてはくれないと考え、ここに投稿しました。 上記のように既にフォームメールページ設置に必要なファイルは、あるので、簡単にできるように思えるのですが?。 どのようにすれば、いいのか御教授下さい。なお、当方、perl,ASPの知識は、ありません。

  • メールフォーム作成でInternal server errorと出ます。

    皆様こんばんは。メールフォーム作成で困っております。 練習中なのでありますがホームページビルダー11に付いていました メールフォームCGIを利用しレンタルサーバーへUPしてみましたが Internal server error500と出てしまいます。 レンタルサーバーはPerlとsendmailはOKです。 ファイル構成です。 index.html kansou.htm kansou.cgi  jcode.pl です。同じディレクトリです。FFFTでパーミッションは755にしてあります。アスキーモード利用 kansou.cgiの最初のあたり ------------------------------------ #!/usr/bin/perl # # (C) COPYRIGHT International Business Machines Corp. 1999 # All Rights Reserved # #------ sendmailパスの指定 ------------------------------------- # 以下の、$mailprogに、サーバー上にある"sendmail"コマンドをフルパスで # 記入します。詳しくは、プロバイダのガイドに従ってください。 # (例) $mailprog = '/usr/lib/sendmail'; $sendmail = '/usr/sbin/sendmail'; $mailto = 'aaa@aaaa.co.jp'; #--------------------------------------------------------------- require 'jcode.pl'; ここまで。 ------------------------------------- kansou.htmの最初あたりのHTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE>感想ページ</TITLE> </HEAD> <BODY bgcolor="#ffffff"> <H2 align="center"><I>お問い合わせフォーム<BR> <BR> 下記に必要事項をご記入の上、送信ボタンを押して下さい。</I></H2> <HR> <FORM action="kansou.cgi" method="POST"><INPUT type="hidden" name="to" value="aaa@aaaa.co.jp"> <CENTER> このあたりまで記載します。 どこが悪いのか何度試してもよく分りません。 どなたかアドバイスして頂けないでしょうか。

    • ベストアンサー
    • CGI

専門家に質問してみよう