• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CGIでメール送信がしたい)

CGIでメール送信ができない?エラーが発生しています

このQ&Aのポイント
  • ホームページからメールを出すCGIを作ろうとしています。しかし、formから動かすと「Premature end of script headers」というエラーが発生しています。改行コードやメール送信先は問題ありませんが、差出人が異なる点にも気付きました。調査しても解決策は見つかりませんでした。どこが問題なのか教えてください。
  • CGIでのメール送信時にエラーが発生しています。ホームページからCGIを実行すると「Premature end of script headers」というエラーメッセージが表示されます。しかし、コマンドから実行すると問題なく動作します。差出人のメールアドレスが異なることにも注目しています。解決策を見つけるために検索しましたが、結果は得られませんでした。どこが原因なのか教えていただけますか?
  • ホームページからメール送信するためのCGIを作成していますが、エラーが発生しています。form経由でCGIを実行すると、「Premature end of script headers」というエラーメッセージが表示されます。しかし、コマンドから実行すると正常に動作します。また、差出人のメールアドレスも異なることにも気付きました。問題の原因を特定するために調査しましたが、解決策は見つかりませんでした。どこが問題なのかアドバイスをいただけますか?

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

  • ベストアンサー
  • _mer_
  • ベストアンサー率47% (27/57)
回答No.1

CGIとして動作させる場合は、最後に標準出力をして終了しないと エラーとなってしまいます。 close(ML);とexit;の間に、 print "Content-type: text/html\n\n"; print "<html><head>\n"; print "</head>\n"; print "<body>sent.\n"; print "</body></html>\n"; などと入れてみて下さい。 (上記のprint文は適当に書き換えて下さい) 如何でしょうか。ご参考になれば。

Otanoshike
質問者

お礼

回答をいただきましてありがとうございます。 見よう見まねで、必要と思う部分だけ書いてみましたが、そういう制約があるんですか。 勉強になりました。 おかげさまで、ちゃんとエラーもきえました。 ありがとうございました。

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

関連するQ&A

  • CGIで二つの仕事をしたい

    464487で質問したOtanoshikeです。 メール送信CGIは_mer_さんに教えて頂いたように直したら、無事動くようになりました。 今度は、このCGIの中で、メール送信後にファイル転送をしようとしています。 一応動いてはいるようなのですが、最後の確認ページが出ません。 どこが悪いのでしょうか?恐らくはまた基本的なことを無視しているのでしょうね。 よろしくお願いいたします。 (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); $filename=$ARGV[0]; $file="/~/~/$filename"; $filetype='x-exe'; print "Content-Disposition:attachment;filename=\"$filename\"\n"; print "Content-type:application/$filetype\n\n"; open(FILE,"$file"); while(<FILE>){ print "$_"; } close FILE; print "Content-type: text/html\n\n"; print "<html><head>\n"; print "</head>\n"; print "<body>sent.\n"; print "</body></html>\n"; exit;

    • ベストアンサー
    • CGI
  • Jcode CP932 のエラーを回避したい。

    プログラム初心者です。 form Mailを設置し、フォーム入力→確認画面までは動くのですが、 最後に、送信ボタンを押すと、500エラーになります。 お手上げです。詳しい方お教えください。 サーバーのエラーログをみたところ、 Can't locate object method "CP932" via package "Jcode" at form_mail.cgi となっていました。 ━━ #!/usr/bin/perl require 'jcode.pl'; $sendmail = '/usr/sbin/sendmail'; use Jcode; ━━ エラーと思われる箇所 sub jis { $msg = $_[0]; # Jcode::convert(*msg,'jis'); $msg = Jcode->new($msg, "UTF8")->CP932; &jcode'convert(*msg,'jis'); } ━━

  • 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
  • ruby(cgi)からメールが送信できない

    require "nkf" require "net/smtp" sendmail('local', 'title', output, 'admin@hoge.co.jp', "hoge@hoge.co.jp") とすると、正常にメールがhoge@hoge.co.jp宛に送信されます。 require "nkf" require "net/smtp" sendmail('local', 'title', output, 'admin@hoge.co.jp', $mail) ※$mailには"hoge@hoge.co.jp"が格納されています。 こうするとメールが送られて来ません。 問題はどこにあるのでしょうか?

  • if文を入れるとcgiが動きません。【Ruby】

    下記のプログラムは正常動作します。 #部、name1に文字列が入っていたら動作するプログラムを 追加すると、ブラウザが白紙になります。エラーなしです。 間違いを教えてください。このファイルはhoge.cgiです。 #!/usr/bin/ruby print "Content-type: text/html\n\n" require "cgi-lib" input = CGI.new #if name1 #print "name is ", name1 #end print <<-"EOB" <form method="POST" action="./hoge.cgi"> name<input type="text" name="name1" size="10"> <input type="submit" value="send"> </form> </body> </html> EOB

  • 非常に見にくいです.....

    このジャンルであっているかどうか微妙ですが質問させていただきます。 よくフリーのCGIやPHPなどのテキストファイルをダウンロードしたとき、アップロード時に転送モードが悪かったのかどうか知りませんが、よく #!/usr/bin/perl↑↑require './jcode.pl';↑require './cgi-lib.pl';↑↑..................... のように改行部がすべて↑になってますよねぇ? もし「戻りページ」など設定しなければならない部分があったりする時は非常に見にくくやりづらいのです。 そこでこの上の例を自動で #!/usr/bin/perl require './jcode.pl'; require './cgi-lib.pl'; に書き換えてくれるようなソフトがあったら教えて下さい!!

    • ベストアンサー
    • CGI
  • CGIでフォームからの入力内容を表示されない。

    初歩的な質問ですみません。 自宅サーバを使っています。 ■ActivePerl 5.8.8 Build 822 ■httpd142p ------------------------------ ■httpd142p ┗■cgi-bin  ┣■cgi-lib.pl  ┣■test.cgi  ┗■test.html ------------------------------- CGIは動作します。 一行目のパスもあっています。 --------------------------- 【test.cgi】 #!C:/perl/bin/perl #require './cgi-lib.pl'; #&ReadParse(*MYDATA) print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<TITLE>RESULT</TITLE>\n"; print "<BODY>\n"; print "氏名 = $MYDATA{'simei'}\n\n"; print "住所 = $MYDATA{'jyusyo'}\n"; print "</BODY>\n"; print "</HTML>\n"; exit; -------------------------------- 【test.html】 <HTML> <HEAD> <TITLE>TEST</TITLE> </HEAD> <BODY> <P> <FORM ACTION="test.cgi" METHOD="POST"> 氏名:<INPUT TYPE="text" NAME="simei"> 住所:<INPUT TYPE="text" NAME="jyusyo"> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="リセット"> </P> </FORM> </BODY> </HTML> ---------------------------------- ■実行結果 氏名 = 住所 = ---------------------------------- どなたかご教授ください。

    • ベストアンサー
    • 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
  • 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
このQ&Aのポイント
  • MFC-J1500Nでの保存の仕方がわからない方へ、スキャンのやり方をご説明いたします。
  • Windows10をお使いの方で、MFC-J1500Nを無線LANで接続している方へ、スキャンの方法をご案内します。
  • ブラザー製品であるMFC-J1500Nのスキャン機能について、保存方法や接続方法についてご質問があります。
回答を見る

専門家に質問してみよう