- ベストアンサー
このメールフォームが機能しないのは何故ですか?
お世話になります。メールフォームを作成してCGIプログラムでメールを送信できるようにしたいと思い、以下のようにhtmlを作成しました。CGIはSYNCK GRAPHICAさんのサイトでお借りして自動返信機能付メールフォームCGIというCGIを使わせてもらいました。?http://www.synck.com/contents/download/cgi-perl/mailform.html レンタルしているサーバはロリポップです。?http://www.lolipop.jp/?mode=manual&state=hp&state2=cgi? CGIでロリポップが指定しているPERLパス・SENDMAILパスを変更してパーミッションも700に設定したのですが、何故かエラーの表示が出て、うまく作動してくれません。郵便番号自動検索機能も正常に機能しません。それでSYNCK GRAPHICAさんにどうして?と聞いたのですが、「http://www.自分のサイトアドレス/mailform.js←ここにファイルが無いためと考えられます。」という返事のみで、「何のファイルがないの?」って感じで全く分かりませんでした。初心者ゆえどこか基本的なことを見落としていると思います、どうか教えてください。 <table> <tr> <td>メールアドレス<span>*</span><p class="form">e-mail address</p></td> <td class="kakikomi"><input type="text" name="email(必須)" style="width: 300px;ime-mode: disabled;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>確認用メールアドレス<span>*</span><p class="form">e-mail address</p></td> <td class="kakikomi"><input type="text" name="confirm_email" style="width: 300px;ime-mode: disabled;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>お名前<span>*</span><p class="form">your name</p></td> <td class="kakikomi"><input type="text" name="お名前(必須)" style="width: 300px;ime-mode: active;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>性別<p class="form">sex</p></td> <td class="kakikomi"><input type="radio" name="性別" value="男" onBlur="keepField(this.form.id)">男 <input type="radio" name="性別" value="女" onBlur="keepField(this.form.id)">女</td> </tr> <tr> <td>電話番号 <p class="form">telephone number</p> </td> <td class="kakikomi"><input type="text" name="電話番号" style="width: 120px;ime-mode: disabled;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>郵便番号<p class="form">postcode</p></td> <td class="kakikomi"><input type="text" name="郵便番号" style="width: 60px;ime-mode: disabled;" onBlur="keepField(this.form.id)"> <input type="button" value="〒から住所を自動入力" name="postcode" onClick="javascript:checkPostcode('mailform','郵便番号','住所(必須)');"></td> </tr> <tr> <td>住所<span>*</span><p class="form">address</p></td> <td class="kakikomi"><input type="text" name="住所(必須)" style="width: 300px;ime-mode: active;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>ご用件<span>*</span><p class="form">inquiry subject</p></td> <td class="kakikomi"><select name="ご用件(必須)" id="business" onBlur="keepField(this.form.id)"> <option value="" selected>下記の中から必ず選択して下さい</option> <option value="デザイン・印刷のお見積り">デザイン・印刷のお見積り</option> <option value="その他お問い合わせ">その他お問い合わせ</option> </select> </td> </tr> <tr> <td>ご用件<span>*</span><p class="form">inquiry body</p></td> <td class="kakikomi"><textarea name="ご用件(必須)" style="width: 300px;height: 140px;ime-mode: active;" onBlur="keepField(this.form.id)" rows="15" cols="30"></textarea></td> </tr> <tr> <td>送信確認<p class="form">sending confirm</p></td> <td class="kakikomi"><input type="checkbox" name="送信確認(必須)" value="送信チェック済み" onClick="keepField(this.form.id)">上記内容を確認したらチェックを入れてください</td> </tr> <tr> <td></td> <td class="kakikomi"><input type="submit" value="メールを送信する"> <input type="reset" name="reset" value="リセット"><br></td> </tr> <tr> <td></td> <td class="kakikomi"><span>*</span>は必須項目です。</td> </tr> </table> </form>
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
難しく考えなくていいよ。 ポップアップの文字化けはPerlエラーがどうだとかじゃなく、多分charsetの相違でしょう。 <script type="text/javascript" src="mailform.js" charset="***"></script> charset="***"の箇所を正しい文字エンコーディングにしてください。 予想では「Shift_JIS」にすればいい気がする。
その他の回答 (8)
- niarbmia
- ベストアンサー率100% (3/3)
<form>タグ内(直下)に <input type="hidden" name="must_id" value="(必須)"> これを挿入してみてください。 元は記入されてたはずですよ。
お礼
niarbmiaさん> 問題は9割方解決しました。パーミションを700のところ600にしていたみたいです。凡ミスでした。あとはポップアップの文字化けだけです。 Perlの文法チェッカー(http://www.e777.co.jp/perlcw/perlcw.html)でチェックしてみたところ、 Perlのエラー出力 Unrecognized character ?241 at tmp.pl line 65. 0065: $name =~ tr/+/ /; という診断でした。どうやらここが間違っているみたいなのですが、私にはどこを修正していいのか分かりません。もしよろしければ教えていただけませんか?
補足
niarbmiaさん> 回答ありがとうございます、すごく助かりました! niarbmiaさんの回答の通り<form>タグ内に<input type="hidden" name="must_id" value="(必須)">を挿入しました。その状態で送信ボタンをクリックしてみたら文字化けしたポップアップ警告がでて、それをOKクリックすると、ページは見つかりませんでした。という表示が。でもフォームからのメールはちゃんと指定のメアドに来ました。 そのあと、finish.htmlの階層が違うことに気づいてこれが原因かもと思い、cgiファイルの $thanks_url = 'http://toonie.cc/finish.html'; を $thanks_url = 'http://toonie.cc/mailform/standard/finish.html'; に変更しました。それで、text転送モードで再アップロード(パーミッションは600に変更)しました。 ところが、今度は文字化けした警告ポップアップが出てくるとこまでは一緒ですが、「500 ERROR ※CGI もしくは SSI が正しく動作していません。」という表示が出て、送れていたメールも届きません。 これは一体どういうことでしょうか?もしかしたらとんでもない間違いを犯していますか?迷惑ばかりかけて申し訳ありませんがどうか教えてください。
- tobi-u-o
- ベストアンサー率18% (44/242)
連絡おくれましたが、 もしまだ解決していないようであれば、 データをください。
お礼
こちらこそ連絡せずに申し訳ありませんでした。是非よろしくお願いします。 現状としましては、相変わらず送信ボタンをクリックすると「Type 1 Error」という表示が出て、送信はできない状態です。ただ住所自動検索は正常に動きます。tobi-u-oの好意に感謝しています。もしかしたら非常にくだらない、簡単なことかもしれませんが、当方素人なものでどうか助けてください。htmlソースとか読みにくいかもしれませんが許してください。下記のページからDLしてください。 http://www.toonie.cc/data.html 契約しているロリポップCGI・SENDMAILの情報も載せておきます。 http://lolipop.jp/?mode=manual&state=hp&state2=cgi よろしくお願いします。
補足
すいません、タイプミスでtobi-u-oさんを呼び捨てにしていました。ごめんなさい。
- tobi-u-o
- ベストアンサー率18% (44/242)
CGIはまだ公開してないですか? 公開しているなら一度見てみたいのですが。 後は、そのエラーを出力するような ものがソース中にないか、 input typeで1という名前がないか教えてください。 できれば一式データを受け取ることができれば、 解決しやすいのですが。。。
補足
ありがとうございます。 データ一式受け取っていただいていいですか? 大変迷惑をかけております&いろいろ面倒みてくださり感謝しています。 Mailformフォルダをそのままダウンロードできるようにすればいいでしょうか?
- tobi-u-o
- ベストアンサー率18% (44/242)
ダイアログ(灰色のポップアップみたいな)の エラーメッセージですよね? それだと、ただ単に入力必須項目に対して 入力がされていませんよというものなので、 全部、必須項目の箇所に入力されていれば 動くと思いますが・・・。 自分でカスタマイズしていなければ、 問題ないはずなので。。。
補足
いえ、アイアログの警告メッセージではなく、ブラウザの画面が変わって「TYPE 1 ERROR」と出ます。他には何の表示もなくそれだけなんです。もちろん必須項目の箇所は全部入力されています。それだけにホントに分からないです、何故なんだ...?
- tobi-u-o
- ベストアンサー率18% (44/242)
ちょっとだけ、そのCGIを触ってみましたが、 そのエラー内容は送信ボタンを押したときに 出てくる入力エラーのことでしょうか?
補足
はい、そうです。送信ボタンを押したときに出てきます。
- tobi-u-o
- ベストアンサー率18% (44/242)
まず、階層をチェックして下さい。 階層が違えば、呼び出されませんし。 後は、エラーの内容を具体的に、説明してください。
補足
回答ありがとうございます。 階層を説明します。まずmailformフォルダの中にstandardフォルダがあって、その中にmailform.jsとsend.cgiやpostcodeフォルダやjcode.plやcount.datなど入っています。アップロードする時はmailformフォルダごとアップロードします。FTP transfer typeはtextです。 エラー内容はTYPE 1 ERRORという表示のみが出ます。
- tobi-u-o
- ベストアンサー率18% (44/242)
そのファイルは項目チェック用のJavascript外部ファイル だと思います。 覗いて見ればわかるでしょうが、 とても重要で長いプログラムが書かれていますよ。 なければ動かないのが当然かな。
お礼
回答ありがとうございます。 mailform.jsというファイルはちゃんとアップロードしてあるんです。でも、機能してくれてないんです。素人なので分かっていないところあると思うんですけど...自分ではもういっぱいいっぱいで。
- inu2
- ベストアンサー率33% (1229/3720)
そのスクリプトは使ったことありませんが、製作者に問い合わせた結果 mailform.js が無いから という返答をいただいたわけですから、mailform.jsを該当場所へアップしてみてください。
お礼
回答ありがとうございます。 mailform.jsというファイルはちゃんとアップロードしてあるんです。でも、機能してくれてないんです。素人なので分かっていないところあると思うんですけど...自分ではもういっぱいいっぱいで。
お礼
niarbmiaさん> ありがとうございます、ご指摘の通りにしたら文字化けはなくなりました。本当に助かりました!自分の力だけではどうしようもないところがあったので本当に感謝しています。ありがとうございました。