dポイントプレゼントキャンペーン実施中!

いきなり社内でメールフォーム作れと言われて、
上からせっつかれる毎日の事務子です・・・。

こちらのサイトさん↓のCGIスクリプト?を使用させて頂こうと思ったのですが、
http://apps.cside.com/cgi/mail/kisomail/

注意事項とプロバイダの設置方法↓を確かめても、http://www.ocn.ne.jp/hosting/usersupport/mw/hp_c …

送信ボタン押下で「Internal Server Error」が表示されるばかりで
早くも1週間が経ちました・・・。

もう限界です。
「これやった?」「こっちは?もう一度確認してみれば?」とかでも歓迎です。
助けて下さい。TT

とりあえず、送信したいと思って、
sendmail.cgiの処理開始(sub start)では、
sub start {
&send_mail();
exit(0);
}
以外はコメントアウトしました。(「#」でいいんですよね?)
他は、「必須」となっている部分以外は変更していません。

ちなみに、http://mmm3079.wh2.ocn.ne.jp/cgi-bin/secure/chkp …
のスクリプトチェッカーで確認したところ、
--------------------------------------------------------------
syntax error at /u/web/gscomc/cgi-local/sendmail.cgi line 83, near "sub start "
syntax error at /u/web/gscomc/cgi-local/sendmail.cgi line 104, near "}"
/u/web/gscomc/cgi-local/sendmail.cgi had compilation errors.
--------------------------------------------------------------
とエラー?が表示されました。
(処理開始できない?何で???)

フォルダ構成は、プロバイダのCGI設置方法に、cgi-localの中に
フォルダはおくな!とあったので、data、libフォルダなどから出して、cgi-localフォルダ直下においてあります。

蛇足ですが↓
JavaScriptでメーラー起動させて送ればいいか、と他でも質問させて
頂きましたが、スパムがヤバイと言われ、一応企業の公式HPですし、
やっぱりCGIを…と思っています。
PHPなら簡単じゃない?とおっしゃる方もいらっしゃいましたが、
HTMLもわけわからんし、これ以上混乱したくないです…。
(CGIのようなものなのでしょか??<PHP)

どうか、よろしくお願いします。<(_ _)>

A 回答 (8件)

>う~ん・・・文字列検索してみましたが、requireはありませんでした。



いや、sendmail.cgiの80行目と82行目ですよ。sub startのちょっと上なのですが・・。ひょっとして私が(提示されたURLから)ダウンロードした基礎メール(v.1.05)と違うソース・・ってことはありませんよね。
    • good
    • 0
この回答へのお礼

!!!!!!!!!!
削除してしまって復活させ損ねてました!!
すいません!!!<(_ _)>

上記を修正後、基礎メール(v.1.05)のreadmeの
【E:補足:メールフォームHTMLの作り方について】
を設定したところ…、

いけました!メール来ました!!=3
これで後はHTML側をちょっとカスタマイズするだけで、完璧です!
(ひとまず公開できる形になります!)

根気よく付き合って下さって、本当に感謝しきれません。
あと、アイコンが来るのを待つだけなので、来週頭にはサイトリニューアルできそうです。
はぁ…どっと肩の荷がおりた感じです。苦笑
まだ、HTMLの手直しなどありますが、やる気でてきました!笑

本当の本当にありがとうございました!!

お礼日時:2008/02/20 14:08

cgi-localの下にディレクトリを作っていないとすれば、



  require( "./lib/jcode.pl" );

とか

  require( "./lib/ap_mimeenc.pl" );

のpathも書き直されてますよね?文法チェッカでノーエラーなのにInternal Server Errorになるというのは「requireしているファイルがない」というのが一番可能性高いので。
    • good
    • 0
この回答へのお礼

う~ん・・・文字列検索してみましたが、requireはありませんでした。
ちなみに、lib、dataでも検索かけましたが、見当たらなかったです。

現在のcgi-localの中は、

ap_mimeenc.pl
jcode.pl
flock.cgi
lastmail.cgi
sendmail.cgi

となっています。

お礼日時:2008/02/20 12:56

>やはりInternal Server Errorと出ます。



Internal Server Errorですか?どこか書き間違えてませんか?「やはり」ということですが、初期状態(宛先を変えただけ)のときは画面が真っ白になるのとメールが送られないだけでInternal Server Errorではなかったんですよね?

>HTML側は、
><FORM method="POST" action="cgi-local/sendmail.cgi">
>としているのですが、こちらは大丈夫ですよね?;

「CGIはcgi-localに置くように」というプロバイダからの指示なんですよね?そのpath指定はこちらではわかりません。普通のhtmlと同階層で「名前だけcgi-localにしておくこと」ということですかね・・。

#このあたりが最初に書いた「サーバ環境を」ということなんですが・・。どちらのサーバで
#しょうか?サーバの(CGIについての)説明があるURLでもあるといいのですが。
    • good
    • 0
この回答へのお礼

>Internal Server Errorではなかったんですよね?

初期状態とは、sub start関数部分だけのことを言ってました。><;
(コメントアウトを外しましたよ~、ということです。)
その時、「print "Content-type: text/html\n\n;」は生きてました。
(で、真白画面)
分かり辛くて申し訳ないです。;;

>「CGIはcgi-localに置くように」というプロバイダからの指示なんですよね?

です。サーバはOCNです。
http://www.ocn.ne.jp/hosting/usersupport/mw/hp_c …
↑ここにCGI設置方法についてが載っています。(見れますか?)
ちなみにスタンダードコースらしいです。

>普通のhtmlと同階層で「名前だけcgi-localにしておくこと」ということですかね・・。

それ以外考えられなかったので、今はそうしてます…。;

お礼日時:2008/02/20 11:22

(追記です)



   >$finish_url = './finish.html';

を相対パスでなく、URLで書いてみてください。あと

   >$data_dir = './data/';
   >$lock_dir = './lock/';

なども

   $data_dir = './';
   $lock_dir = './';

にされてますか?(ディレクトリから出したんですよね?)

#しかしcgi-localなんてとこで動かさないといけないサーバなんて、久しぶりだ(汗
    • good
    • 0
この回答へのお礼

お世話になります。

No4,5と作業をしましたが、やはりInternal Server Errorと出ます。TT

HTML側は、
<FORM method="POST" action="cgi-local/sendmail.cgi">
としているのですが、こちらは大丈夫ですよね?;

お礼日時:2008/02/20 10:37

>shimixさんのアドバイス通り、コメントアウトはずして、


>初期状態で動作させているのです。

それは失礼しました。ではNo.2のお礼に書いていた

>Perlスクリプト内に必ず「print "Content-type: text/html\n\n"」ま
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>たは、Perlモジュール"CGI.pm"を参照する記述(下記参照)が含まれて
>いることを確認してください。

という部分は外してください。LocationでURLを遷移するのに、先にContent-Typeを出してはいけません。エラー表示などはCGI内でContent-typeを自前で出しているハズです。
    • good
    • 0
この回答へのお礼

お世話になります。

はずしました。

お礼日時:2008/02/20 10:35

>そして・・・その一文を追加したら何事もなく次のページに進んだのです


>が、真白なページです・・・。

いや、sub startの最後の

  print "Location: $finish_url\n\n";

をカットしていたら、真っ白な画面が正常動作ですよ。ブラウザにContent-typeだけを返して中身は何もなしですから(汗
    • good
    • 0
この回答へのお礼

???
いえいえ。
カットしてないですよ?
shimixさんのアドバイス通り、コメントアウトはずして、
初期状態で動作させているのです。

お礼日時:2008/02/19 16:36

>syntax error at /u/web/gscomc/cgi-local/sendmail.cgi line 83, near "sub start "



82行目に;セミコロンがないとかそんなもんでしょ。
よく見てみましょう。
    • good
    • 0
この回答へのお礼

(No1の作業後に作業しています。)
ご回答ありがとうございます!

プロバイダのCGI設置方法に、
===============================================================
Perlスクリプト内に必ず「print "Content-type: text/html\n\n"」ま
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
たは、Perlモジュール"CGI.pm"を参照する記述(下記参照)が含まれて
いることを確認してください。
===============================================================
波線部分をそのままコピペしたら、セミコロンがありませんでした。orz
ご指摘ありがとうございます!

そして・・・その一文を追加したら何事もなく次のページに進んだのですが、真白なページです・・・。
("index.html")を指定しているはずはのですが??)
URLは、http://○○○/cgi-local/sendmail.cgiとなっていて、
メーラーを起動させましたが、受信できてませんでした…。
他に何がいけないのでしょう・・・。TT

>皆様
大変お手数ですが、引き続きお願いいたします。

お礼日時:2008/02/19 16:08

サーバの環境を書いてください。



>syntax error at /u/web/gscomc/cgi-local/sendmail.cgi line 83, near "sub start "

行数が違いすぎて、どうなっているか推測できません。sub startは98行目のハズですから、ここまででも15行は削っているんですよね?

基本的に「perlとsendmailへのpath」「宛先メールアドレス」以外は何も触らない状態で動作確認するのが先です(それからカスタマイズすることになります)。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。TT

サーバの環境って具体的にどんなのを書けばいいのでしょう?;

---------------------------------------------------------------
## 処理開始
# @return void
sub start {

#入力検査
&check_params();

#ロック
&lock();


#2重送信検査
my $check = &check_lastmail();

#ロック解除
&unlock();

#2重送信でなければ、メール送信
if( $check ) { &send_mail(); }
&send_mail();
#終了画面の表示して終了
print "Location: $finish_url\n\n";
exit(0);
}
---------------------------------------------------------------
こうなっている部分を、
&send_mail();
exit(0);
以外全部コメントアウトにしてました。
そして、何も触らない状態でやってみて、Internal Server Error
がでました…。

あ、でもスクリプトチェッカーは、
/u/web/gscomc/cgi-local/sendmail.cgi syntax OK
とでました!(OKってことですよね)

お礼日時:2008/02/19 15:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!