メールフォーム設置の仕方を教えてください

このQ&Aのポイント
  • CGI初心者の方にもわかりやすく、メールフォームの設置方法を解説します。
  • HPのサンプル版から使えるメールフォームを紹介しますが、送信ボタンを押すとエラーになる問題が発生しています。
  • OCNを利用している場合は、CGIスクリプトについての説明がオンラインで提供されています。
回答を見る
  • ベストアンサー

メールフォーム設置の仕方を教えてください

CGI初心者です。 メールフォームは、HPのサンプル版から使いました(市販)。 送信ボタンを押すとエラーになります。プロバイダはOCNです。 http://kataefudousan.jp/contact.html CGI初心者でよく理解ができません。 http://www.ocn.ne.jp/hosting/usersupport/mw/hp_cgi_04.html ↑ CGIスクリプトについて説明があります。(OCN) contact.cgi ↓ #!/usr/lolal/bin/perl use CGIqw(:cgi-lib :standard); print header(); # ご使用のサーバの perl コマンドへのパスを1行目(この上)に書いてください。 # 「#!」 の前には空白、改行などを入れないでください。 # わからない場合は、サーバの管理者へお問合わせください。 ################################################################ # ご使用時に、この下を編集してください。 ################################################################ # sendmail コマンドのパス(サーバ管理者にお問合わせください。) $SENDMAIL = '/usr/lib/sendmail'; ##### メール設定 # 管理者メールアドレス(このアドレスにメールが送信されます。) $ADMIN_MAIL = 'with-a@u01.gate01.com'; # 管理者名前 $ADMIN_NAME = 'サンプル'; # メールサブジェクト ## ユーザあて $USER_SUBJECT = 'フォームメールを送信しました。'; ## 管理者あて $ADMIN_SUBJECT = 'フォームからのメールです。'; ################################################################ # ご使用時に、この上を編集してください。 ################################################################

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

  • ベストアンサー
  • vista2446
  • ベストアンサー率46% (131/279)
回答No.3

私もCGIについて、詳しくないのですが・・・まず、jcode.plとSendMail.plがcgiファイルと同じ階層にあるか確認しましょう。コチラからだと存在してないように思います。ファイルへの変更ですが、OCNの説明通りに記述するしかないと思います。シェルスクリプト1と2のあたりを確認ですかね。文法チェッカーも用意されてるみたいなので、これも活用しましょう。なにかヒントをもらえるかも。。。。 CGIの設置は本当に面倒ですね。私の場合、編集しては検証の繰り返しで動作を確認してます。サーバーに負担がかかりますので、ローカルで検証してます。ところで、このCGIスクリプトはご自身で書かれたものでしょうか?それとも、どこかで入手されたものなんでしょうか?後者の場合なら、設置方法など書かれてると思うのですが。。。 Internal Server Error(500エラー)は、cgiが動作しないときに表示されます。.や;を間違って1文字消しただけでも返ってくるエラーです。また、cgiが使用する外部ファイルが存在しないとき、パーミッションが適切な設定になっていないときも吐き出されてきます。 煮詰まらないよう頑張ってください。 http://www.ocn.ne.jp/hosting/usersupport/mw/02.html#cgi http://www.ocn.ne.jp/hosting/usersupport/mw/hp_cgi_05.html http://www.ocn.ne.jp/hosting/usersupport/mailweb/1_a26.html *ご確認済みでしたらお読み捨てを。。。

hanapaine
質問者

補足

contact.cgiをスクリプトチェッカーにかけたところ↓のエラーがでました。 syntax error at /u/web/kataef/cgi-local/contact.cgi line 2, near "(:" /u/web/kataef/cgi-local/contact.cgi had compilation errors. ---------------------------------------------------------- #!/usr/lolal/bin/perl use CGIqw(:cgi-lib :standard); print header(); ---------------------------------------------------------- ↓2行目、:を;にしても試しました。 use CGIqw(;cgi-lib :standard); ----------------------------------------------------------- use CGIqw(:cgi-lib :standard); print header(); ↑この2行はOCNで指定されています。 http://www.ocn.ne.jp/hosting/usersupport/mw/hp_cgi_04.html 記述は間違ってないように思うんですが・・・

その他の回答 (2)

  • vista2446
  • ベストアンサー率46% (131/279)
回答No.2

今度はCGIでお悩みのようですね。「お問い合せ」のページソースでANo.1の指摘されている<form>のパスが違っているようです。cgi-bin/formmail.plが404エラーになります。 ご質問文とからOCNの説明から「cgi-local/contact.cgi」へアクセスしてみたところ、500エラーになりましたので、cgiファイルはこのパスに存在することになります。が、Internal Server Errorですので、HTMLのパスを書き換えてもメールフォームは動作しません。contact.cgiをOCNのサーバーに合わせて編集してください。

hanapaine
質問者

補足

vista2446様 2回目の回答ありがとうございます! >contact.cgiをOCNのサーバーに合わせて編集してください。 perlパス、sendmailパスを編集したんですが・・ 後はどこを編集したらいいんでしょうか・・・?

  • kappa-pa
  • ベストアンサー率49% (101/206)
回答No.1

サイトのそのページのソースを見ると <FORM action="/cgi-bin/formmail.pl" となっていますが cgi-binというフォルダ名、また実行ファイル名formmail.plは正しいのでしょうか。 アップしたファイルとhtmlとを照らし合わせて確認してください。 上のプログラム名はcontact.cgiですよね。 また、OCNの説明を見ると/cgi-bin/フォルダ名でよいのか疑問です。 >4. ブラウザでCGIスクリプトへのパス"http://www.your_domain.co.jp/cgi-local/ファイル名"を直接入力するか、HTMLファイルからのリンクにより起動してください。 設置したいフォームはcontact.cgiだけで完了するプログラムなのか?一連の他のファイルがあるのかこれだけの情報ではわかりません。 セットになっているならすべてのファイルをサーバの指定された場所にあげてやる必要があります。

hanapaine
質問者

補足

回答ありがとうございます。 > <FORM action="/cgi-bin/formmail.pl" となっていますが cgi-binというフォルダ名、また実行ファイル名formmail.plは正しいのでしょうか。 FORM action="/cgi-bin/formmail.pl" ↓修正しました FORM action="/cgi-local/contact.cgi" 今度はエラー内容が変わりました。 これは、どういうエラーなのでしょうか・・・? ちなみにプロバイダはOCNですが、私のPCは別プロバイダでアップを行ってますが、それは問題ありませんか? >設置したいフォームはcontact.cgiだけで完了するプログラムなのか? ↓上記に記載しているcontact.cgiの続きです。 ################################################################ # ここから下はプログラムです。変更しないでください。 # use lib "./lib"; require "jcode.pl"; use KCatch qw( jcode=sjis source ); use FormData; require "SendMail.pl"; ##### システム設定 # 文字エンコード $charset = 'sjis'; # フォーム名 @FormName = ( 'name_str_req' # お名前 ,'email_mail_req' # メールアドレス ,'comment_str_req' # 内容 ); # エラー画面用フォーム表示名 %FormData = ( 'name_str_req' =>'お名前' ,'email_mail_req' =>'メールアドレス' ,'comment_str_req' =>'内容' ); #################### # フォームデータ取得 $obj = new FormData(); %in = $obj->CreateHash(); %FormHash = $obj->SelectHash(%in); $mode = $in{'mode'}; #################### # モード分岐 if($mode eq 'comp'){ $body = <<EOF; お名前 : $FormHash{'name_str_req'} E-Mail : $FormHash{'email_mail_req'} 内容 : $FormHash{'comment_str_req'} EOF ## 管理者宛送信 MailSend( $ADMIN_MAIL , $ADMIN_SUBJECT # , $FormHash{'comment_str_req'} , $body , $FormHash{'email_mail_req'} , $ADMIN_NAME , $FormHash{'name_str_req'} , $bcc , $addparam , $charset ); ## ユーザ宛送信 MailSend( $FormHash{'email_mail_req'} , $USER_SUBJECT # , $FormHash{'comment_str_req'} , $body , $ADMIN_MAIL , $FormHash{'name_str_req'}." 様" , $ADMIN_NAME , $bcc , $addparam , $charset ); require "./inc/contact_thanks.inc"; exit; } else { # 確認画面 #################### # フォームデータチェック $flag = $obj->FormDataCheck(\%FormHash,\%FormData,\@FormName); if(!$flag){ $msg = $obj->GetErrorMessage(); require './inc/contact_error.inc'; exit; } #################### require "./inc/contact_conf.inc"; exit; } exit;

関連するQ&A

  • メールフォームCGIの設置について

    下記のサイトのメールフォームCGIをさくらインターネットのサーバーで設置したいのですが、うまく作動せず送信できません。 前にロリポップサーバーで設置したところ、作動し送信も問題なくおこなえたのですが、パーミッションやそれぞれのファイルの中身までロリポップで設置したものとまったく同じファイル・条件でさくらインターネットのサーバーに設置したのですが「500 Internal Server Error」がでてしまい、送信できません。 CGIの提供先は下記になります。 http://pgd.jp/cgiscript.html さくらインターネットのパスなどは下記の通りです。 Perl:5.8.x perl:/usr/bin/perl sendmail:/usr/sbin/sendmai CGIの動作環境は下記の通りです。 Perl5 # /usr/sbin/sendmail が使えること # モジュール HTML::Template, Jcode が動作すること 色々試してはみたのですが、CGIやPerlの知識はほとんどありませんので結局何をやってもだめでした。 パーミッションの設定やファイルのアップロードは間違いなくできております。 よろしくお願い致します。

    • ベストアンサー
    • CGI
  • 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';

    • ベストアンサー
    • Perl
  • メールとウェブサーバーが別マシンで構成されたフォームメールの設定

    http://www.kent-web.com/data/postmail.html ↑ ここに書かれているCGI・Perlにてフォームメールの設定をしようとしているのですが、メールプログラムまでのパスを指定で分からなくなりました。 # メールプログラムの指定 $mailprog = "/usr/lib/sendmail"; マシーン構成は、DNS・sendmailはTurbolinuxで、WebサーバーはApacheでWidows2000の環境になっています。 つまり、Webサーバーにcgi・perlの定義をしていて、別マシーンにsendmailが動いている状況です。 そもそも、Web・メールサーバーが同一マシン上でないとフォームメールができないのかも知れませんが、そのあたりのアドバイスもお願いします。

    • ベストアンサー
    • 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'; $to = '*********@*****************'; #$from = ''; $subject ='************'; # メール送信 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<br><br>"; print " $naiyou<br><br>"; print "メールを送信しました<br>"; exit HTMLで<textarea rows="6" cols="60" wrap="hard" required name="naiyou"> としたのですが Perlで確認表示の$naiyouの所が英語も日本語は改行されません。

    • ベストアンサー
    • Perl
  • フォームメールについて・・・お手上げです

    フォームメールを作成する為、あらゆるサイトで検索し試しましたが出来ませんでした。 そこで無料で出来るフォームズというサイトを使用させていただこうかと思ったのですが、ページ1枚に 画像とレンタルのフォームを載せたいのですが、可能でしょうか?またその行為は違法なのでしょうか?(どこも記載はありませんでした。) 購入した本で調べましたら、mailto方式が掲載掲載されていましたが、これですと送信ボタンを押した際に警告(メールアドレスを使って送信されますがOKですか?のような)メッセージが出ますので別の方法があればアドバイスください。 サーバーの利用環境は・・・ 利用可能なスクリプト言語 Perl5 Perlのパス /usr/local/bin/perl Sendmailのパス /usr/lib/sendmail uuencodeのパス 提供しておりません SSI利用 不可 Shellログイン 不可 Telnet利用 不可 サーバーOS UNIX サーバソフトウェア Apache互換 となっております。どうかお願いします。

    • ベストアンサー
    • CGI
  • Postfixでメールフォーム・・・・

    Vine Linux3.2でサーバーを動かしているのですが、先日CGIのメールフォームを設置できればいいなぁ~と思い、早速インターネットでいろいろと調べたところ、Vine Linux3.2に標準でインストールされているPostfixでもメールフォームができるというとでさっそく試してみました。 まず、KENT-WEBのホームページ( http://www.kent-web.com/ )にあるCGIスクリプト「PostMail」をダウンロードしてsendmailへのパスを/usr/bin/sendmail.postfixに変更し、サーバーにアップして実行してみたのですが、「メール送信失敗」と出ます。 Checkモードで確認してみると メールソフトパス:NG → /usr/bin/sendmail.postfix となっています。 どうすればPostfixでもメールが送信できるようになるでしょうか? アドバイスよろしくお願いします。

  • sendmailを使わないで送れるメールフォームを探しています。

    自宅サーバーでサイトを公開しているのですがsendmailが使えません。 あちこち探したのですが、配布されているメールフォームCGIはほとんどがsendmailを使うものでした。 次のようなメールフォームCGIをご存知の方よろしくお願いします。 (1)sendmailを使わないでプロバイダ(OCN)のメールサーバで送る (2)投稿者に自動返信ができる (3)送信先のアドレスが複数指定できる (4)添付ファイルが複数送れる (5)必須入力項目のチェックができる 勝手なことばかり申しますがよろしくお願いします。

    • ベストアンサー
    • CGI
  • sendmailでメールが送信されない。

    こんにちは。 自動応答メールフォームのCGI「ThemeResMail」というのを 使っているのですが、うまく動作しません。 このcgiをアップしたのは以下のレンタルサーバーです。 http://www.dot5hosting.com/dot5/ 使用しているcgiはこれです。 http://apps.cside.com/theme/tmresmail/ メール送信完了画面は出るのですが、 送信者、あて先共にメールが届きません。 同じ設定で他のサーバー(xrea)ではうまくいきました。 sendmailとperlのパスは調べた所、間違いないようです。 ■dot5でのパス sendmail /usr/sbin/sendmail Perl /usr/bin/perl 何が原因なのかどんな事でも結構ですのでコメント頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • フォームの送信ボタンを押すと

    どなたか、お助けいただければ幸いです。 メールフォームを設置し、いざ送信テストをしようと 思ったのですが、送信をする際に下記のようなエラーがでます。 対処方法を教えてください(@´_`@)フエーン □エラーメッセージ□ Software error: Can't locate Jcode.pm in @INC (@INC contains: /usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6.1/i386-linux /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl/5.6.0/i386-linux /usr/lib/perl5/site_perl/5.6.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.6.1/i386-linux /usr/lib/perl5/vendor_perl/5.6.1 /usr/lib/perl5/vendor_perl .) at mailform.cgi line 8. BEGIN failed--compilation aborted at mailform.cgi line 8. というような、エラーです。このエラーは当方は初めて見るエラーでして、どのように対処すればわかりません。。。 □8行目記載内容□ use Jcode; のみです。 □フォーム設置ツリー□ ../inquiry/index.html ../cgi/toiawase/mailform.cgi ../cgi/jcode.pl   ↓ここから下は同ディレクトリーです。 ../cgi/cgi-lib.pl という中身で設定しております。 □環境□ IBM Xserver(Xeon 2.4GHz) Redhat Linux DirectAdmin Apache1.3.29 もし、この件でこの内容がなければ対処ができないとのことであれば、 何なりとおっしゃってください。 よろしくお願いします。。。

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

    メールフォームの送信ボタンを押すと 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