• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FlashQ&A(サンプル作品集)の憲ちゃん様作成のCGIについて)

FlashQ&A(サンプル作品集)の憲ちゃん様作成のCGIについて

このQ&Aのポイント
  • FlashQ&A(サンプル作品集)の憲ちゃん様が作成したCGIについて詳細を質問します。
  • FlashQ&A(サンプル作品集)の憲ちゃん様の作成したCGIで、自動返信機能を追加したいと考えています。具体的には、webform_flas01.cgiをコピーして宛先と差出人の部分を逆にしたら、送られてくるメールが届かなくなりました。お知恵をお借りしたいです。
  • 使用環境はWindoesXP SP2 Flash8です。CGIに詳しい方に助言をいただけると嬉しいです。

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

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

以下で多分平気だと思います。 sub sendmail { if (!(open(OUT,"| $sendmail -t"))) { &error('エラー'); } print OUT "X-Mailer: WebFORM v4.0 by ​www.rescue.ne.jp​\n"; print OUT "X-HTTP_REFERER: $ref\n"; print OUT "Errors-To: $mailto\n"; print OUT "To: $mailto\n"; print OUT "From: $email\n"; &jis("Subject: $subject"); print OUT "$msg\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n"; &jis("--- ここから ---"); print OUT "$msg\n\n"; $count = @DATA_N; foreach (0..$count-1) { if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; } else { &jis("$DATA_N[$_] = $DATA_V[$_]"); print OUT "$msg\n"; } } &jis("--- ここまで ---"); print OUT "\n$msg\n\n"; $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; } print OUT "\n"; print OUT "----------------------------------------\n"; print OUT "送信日時   : $date_now\n"; # print OUT "Server-Name : $ENV{'SERVER_NAME'}\n"; # print OUT "Server-Protocol : $ENV{'SERVER_PROTOCOL'}\n"; # print OUT "Server-Port : $ENV{'SERVER_PORT'}\n"; # print OUT "Gateway-Interface : $ENV{'GATEWAY_INTERFACE'}\n"; # print OUT "Request-Method : $ENV{'REQUEST_METHOD'}\n"; # print OUT "Script-Name : $ENV{'SCRIPT_NAME'}\n"; # print OUT "HTTP-Referer : $ref\n"; print OUT "HTTP-User-Agent : $ENV{'HTTP_USER_AGENT'}\n"; print OUT "Remote-host : $host\n"; print OUT "Remote-Addr : $ENV{'REMOTE_ADDR'}\n"; print OUT "----------------------------------------\n"; print OUT "\n"; close(OUT); # 二通目の送信処理 if (!(open(OUT,"| $sendmail -t"))) { &error('エラー'); } print OUT "X-Mailer: WebFORM v4.0 by ​www.rescue.ne.jp​\n"; print OUT "X-HTTP_REFERER: $ref\n"; print OUT "Errors-To: $mailto\n"; print OUT "To: $email\n"; print OUT "From: $mailto\n"; &jis("Subject: $subject"); print OUT "$msg\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n"; &jis("--- ここから ---"); print OUT "$msg\n\n"; $count = @DATA_N; foreach (0..$count-1) { if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; } else { &jis("$DATA_N[$_] = $DATA_V[$_]"); print OUT "$msg\n"; } } &jis("--- ここまで ---"); print OUT "\n$msg\n\n"; $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; } print OUT "\n"; print OUT "----------------------------------------\n"; print OUT "送信日時   : $date_now\n"; # print OUT "Server-Name : $ENV{'SERVER_NAME'}\n"; # print OUT "Server-Protocol : $ENV{'SERVER_PROTOCOL'}\n"; # print OUT "Server-Port : $ENV{'SERVER_PORT'}\n"; # print OUT "Gateway-Interface : $ENV{'GATEWAY_INTERFACE'}\n"; # print OUT "Request-Method : $ENV{'REQUEST_METHOD'}\n"; # print OUT "Script-Name : $ENV{'SCRIPT_NAME'}\n"; # print OUT "HTTP-Referer : $ref\n"; print OUT "HTTP-User-Agent : $ENV{'HTTP_USER_AGENT'}\n"; print OUT "Remote-host : $host\n"; print OUT "Remote-Addr : $ENV{'REMOTE_ADDR'}\n"; print OUT "----------------------------------------\n"; print OUT "\n"; close(OUT); print "Content-type: text/plain\n\n"; print 'Check=ok'; exit; }

rose_web
質問者

お礼

moon_night様 お陰様で、できました! ご丁寧に説明して頂き有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

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

sub sendmail { ~~省略~~} を丸々コピーすると片方のみしか動作しないと思います。 やるのならば sub sendmail{ ~~省略~~} の中身を二つに増やしてあて先と差出人を逆にするとできると思います。 (sub sendmail{}の中で 「~~省略~~」を二つに増やすと言うことです)

rose_web
質問者

補足

ご回答有難うございます。 moon_nightのご指摘通り、 if (!(open(OUT,"| $sendmail -t"))) { &error('エラー'); }        ~~省略~~ print "Content-type: text/plain\n\n"; print 'Check=ok'; exit; の部分までを中にコピーして、あて先と差出人を逆にしたのですが できませんでした。 下記にsub sendmailの部分を貼り付けておきますので、ぜひお返事いただけないでしょうか? よろしくお願いします。 sub sendmail { if (!(open(OUT,"| $sendmail -t"))) { &error('エラー'); } print OUT "X-Mailer: WebFORM v4.0 by www.rescue.ne.jp\n"; print OUT "X-HTTP_REFERER: $ref\n"; print OUT "Errors-To: $mailto\n"; print OUT "To: $mailto\n"; print OUT "From: $email\n"; &jis("Subject: $subject"); print OUT "$msg\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n"; &jis("--- ここから ---"); print OUT "$msg\n\n"; $count = @DATA_N; foreach (0..$count-1) { if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; } else { &jis("$DATA_N[$_] = $DATA_V[$_]"); print OUT "$msg\n"; } } &jis("--- ここまで ---"); print OUT "\n$msg\n\n"; $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; } print OUT "\n"; print OUT "----------------------------------------\n"; print OUT "送信日時   : $date_now\n"; # print OUT "Server-Name : $ENV{'SERVER_NAME'}\n"; # print OUT "Server-Protocol : $ENV{'SERVER_PROTOCOL'}\n"; # print OUT "Server-Port : $ENV{'SERVER_PORT'}\n"; # print OUT "Gateway-Interface : $ENV{'GATEWAY_INTERFACE'}\n"; # print OUT "Request-Method : $ENV{'REQUEST_METHOD'}\n"; # print OUT "Script-Name : $ENV{'SCRIPT_NAME'}\n"; # print OUT "HTTP-Referer : $ref\n"; print OUT "HTTP-User-Agent : $ENV{'HTTP_USER_AGENT'}\n"; print OUT "Remote-host : $host\n"; print OUT "Remote-Addr : $ENV{'REMOTE_ADDR'}\n"; print OUT "----------------------------------------\n"; print OUT "\n"; close(OUT); print "Content-type: text/plain\n\n"; print 'Check=ok'; exit; }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Flash みてください!初心者です!!

    憲ちゃんのサイトで質問したのですが、 見てくれている人がいるのか不安です。 http://hfm-kenchan.com/cgi/flash_qa.cgi gooでも憲ちゃんの掲示板でもいいので回答お願いします。 質問内容は、 憲ちゃんの著書のサンプル http://hfm-kenchan.com/xbook/index.htmの sample-b15 スライドバーから数値を取れるように onClipEvent (load) { hensu = "150"; } onClipEvent (enterFrame) { hensu = Math.round(mc._x) ; } と書き、ダイナミックテキストにhensuの値を表示するようにしました。 問題はこのスライドバーを少し傾けて配置したときに hensuの値が表示されなくなったことです。 うまく説明できなくてすみません。 なんでこうなるのかと、値を表示させるためには何をすべきかアドバイスください。 お願いします。

    • ベストアンサー
    • Flash
  • CGIがうまくアップできない(500エラー)

    http://hfm-kenchan.com/Lesson/sampl/diary0.txt 上記のCGIをアップしましたが、500エラーが出ます。 本来なら &check=ok& &message=2009年06月21日 (日) 22時19分 44444 -------------------------------- 2009年06月16日 (火) 14時07分 asssaa -------------------------------- 記事は以上です。& となるはずです。 エラーの原因を教えていただけないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • CGI
  • FLASH制作で質問があります!

    FlashQ&A(サンプル作品集)の憲ちゃん様のサイト http://hfm-kenchan.com/Lesson/contents/index.htm No.874の素材を使わせてもらい、 FLASH制作をしているのですが、 画像のようなことをしたいと思っています。 No.874の物は、サムネイルをクリックすると 該当の画像が大きく表示され、画像の外をクリックすると閉じるというものになっています。 しかし、大きく表示された画像の左右に▲ボタンをもうけ、その▲ボタンを押すと、 前の画像や次の画像にうつるというものを作りたいと思っています。 現在、自分の方でも調べているのですが、 分かる方がおりましたら教えていただけると非常に助かります… 何卒、宜しくお願い申し上げます。

    • ベストアンサー
    • Flash
  • 教えてフリーCGI

    こんなフォームメールのCGIを探しているのですが、知っている方がいらっしゃれば教えていただければと思います。 ・宛先をフォームから入力できるもの。 ・sendmailが使えないので、smtpサーバーを使ってメールの送信をできるもの。 ・iモードからも使いたいと思っているのでので、なるべく軽いもの。 CGIの知識があまりないので自分で作ったりできないので探しています。よろしくお願いします。

    • ベストアンサー
    • CGI
  • sendmailでの着信メール形態

    WEBページにCGIメールフォームを作成しました。 sendmailで記入されたフォームを自分宛アドレスで受信出来ております。 問題は、受信メールのFrom情報が、フォーム投稿者(差出人)アドレスではなく、加入しているプロバイダでの自分宛メールアドレスとなっております。 そのため、受信メールで即返信すると、ホーム記入者宛とならず、宛先を差出人アドレスに書き換えが必要となり、煩わしく困っております。 受信メールのFrom情報を正規の差出人アドレスにするにはどうしたらよいのでしょうか。 SENDMAILのコマンドオプションの書き方で直るのでしょうか。ご指導ください。 (ホスト  BIGLOBE  www2a.mtj,biglobe.ne.jp  無料CGIメールフォーム 使用)

  • sendmailを使って宛て先、差出人をフォームで入力してから送る方法

    sendmailで宛て先、差出人のメールアドレスをそれぞれメールフォーム(htmlによるもの)で入力して送る方法を知りたいです。 どうぞ教えてください。

    • ベストアンサー
    • CGI
  • 外部swfで制御するスライドショー

    始めまして。初心者ですが宜しくお願い致します。 ボタン用swfと画像用swfが同一html内で連動するようにしたいのですが 分かりません。 【FlashQ&A】 http://hfm-kenchan.com/Lesson/log_qa/D0807201.htm 上記の『daniwell』さんが作成した http://papiness.com/qanda/photo_slide/photo_slide.html を参考に作成しましたところ外部ではなく同一のswfでは可能ですが 外部のswfの場合が分かりません。 ご面倒をおかけ致しますが、ご助言をお願い致します。

  • sendmail

    フォームメールのcgiを自宅サーバーで作成しようと して、サンプルのcgiを実行しようとおもったのですが、sendmailのパスを設定してくださいとあるのですがsendmailがどこにもありません。どこから入手すればよいのですか?サーバーはwindowsです。 サンプルcgiは、10日でおぼえるPerl/CGIの第5日4時限目のとこです。 よろしくお願いします。 当方はperl初心者です。

    • ベストアンサー
    • Perl
  • cgi(perl) sendmailの使い方

    お手数ですがよろしくお願い致します。 レンタルサーバー(ロリポップ)にCGIを設置してサイトを作成しています。 メールフォームを作ってフォームから指定されたメールアドレスに自動返信するようにしたいのですが、うまく動作しなくて困っています。 利用環境は Perl(ver.5.8.8)でsendmailについては以下のようになっています。 ・SENDMAIL の利用は可能です。 postfixによるラッパーとなります。 ・sendmailのパスは/usr/lib/sendmail もしくは/usr/sbin/sendmail どちらでも利用可。 現在メールを送るところまでは出来るようになったのですが、届くメールを見ると宛先などのアドレスに余計なドメインが付加されているのです。 テスト中のcgiは大体以下のような感じです。 my $from = 'foo01\@bar.jp'; my $to = 'foo02\@bar.jp'; my $subject = 'test'; my $msg = 'test'; open(SDML,"| $sendmail -t -i") || die; print SDML "From: $from\n"; print SDML "To: $to\n"; print SDML "Cc: $cc\n"; print SDML "Subject: $subject\n"; print SDML "Content-Transfer-Encoding: 7bit\n"; print SDML "Content-Type: text/plain;\n\n"; print SDML "$msg"; close(SDML); これで送られてくるメールを見ると 宛先: "foo02@bar.jp"@usersXXX.phy.lolipop.jp (XXXは本当は数字。usersXXXはロリポップのサーバー番号というものらしいです。) こんな風に余計なドメインがくっついて送られてきます。 print SDML "To: $to\n"; → print SDML "To: foo02\@bar.jp\n"; という感じで直書きに直すとこの症状は起こらないのですが、変数で指定するとどうしても起こります。 自動返信するため宛先に変数を使いたいのですがどうしたらこの症状が出ないように出来るのでしょうか?

    • ベストアンサー
    • CGI
  • CGIでメール送信がしたい

    ホームページからメールを出すCGIを作ろうとしています。 コマンドからCGIを直接実行すると問題なく動くのですが、formから動かすと Premature end of script headers: ・・・・ というエラーがでます。いろいろ探してみたんですが、分かりませんでした。 改行コードは端末からviで書いてますので、問題は無いだろうと思っているんですが… エラーはでますが、メールは送っているようです。 コマンドから実行した場合の差出人はroot@hoge.netになっているんですが、 ページから実行させたものはanonymous@hoge.netになります。 きっと勉強不足でとんでもないことをやっているんだろうと思うのですが、 探した範囲には答えがありませんでした。 どこが悪いのか教えてください。よろしくお願いします。 サーバーはVine2.6R1でApacheを使っています。 (test.html) <html> <body> <form name="down" action="/cgi-bin/test/a.cgi" method="post"> <input size="20" type="text" name="a_sel"> <input type="submit"> </body> </html> (a.cgi) #!/usr/bin/perl require '../mimew.pl'; require '../jcode.pl'; $sendmail = "/var/qmail/bin/sendmail"; $master_id = "ho\@hoge.net"; $msg="メッセージ"; &jcode'convert(*msg,'jis'); open (ML,"| $sendmail $master_id"); print ML $msg; close(ML); exit;

    • ベストアンサー
    • CGI