CGI-BBS > SO−HO > ショッピングバスケット > 逸品即決で送信が出来ず画面も変わらないのですが?


カレッヂ
カレッヂ


質問者 saku  投稿日 3/24(月) 22:45:15
逸品即決を使いたいのですが、メールの送信だけができません・・・。
送信ボタンをおしても画面もそのままで変わらないくて
ぜひ使いたいのでお返事お願いします!
プロバイダーのCGIについての制限は下記の事が書いてありました。

セキュリティの関係から以下の制限があります。ご注意ください。
CGIプログラムを書くために
・PerlのバージョンはVer5.6です。
・c等のバイナリはご利用できません。 
・シェルはご利用になれません。(telnetはご利用できません) 
・なお、nkfやmail等、Unixコマンドは使用できません。 
・	日本語コード変換については、Perlのパッケージjcode.plをご利用ください。 
・以下のCGIに関してはサンプルを提供しておりますので、必要な方は「CGIライブラリ」・sendmailに対してSMTPで送信するPerlサンプルssendmai(simple sendmail)を用意しております。CGIセットアップを行っていただきますとcgi-binディレクトリにコピーされます。 

パス指定例としては、
$sendmail = '/usr/bin/sendmail'; となるところを、
$sendmail = './ssendmail'; と記述して頂くことになります。
当サーバの使用上sendmailはご利用になれません。ssendmailをご利用ください。 

と書いてありましたssendmailの設定は済んでます。

プロバイダ参照:http://home.hi-ho.ne.jp/support/service/web.html
サーバのOS:(未選択)
パソコンのOS:Mac9
エディタ:
FTPソフト:Fetch3.0.3J2
サーバ移転:していない
改造:していない
CGI習熟度:firsttime

回答者 呑兵衛@大阪  [削除]  投稿日 3/25(火) 22:03:00
2行ある
if (!open(OUT,"| $nkf -j | $sendmail -t")) { &error("異常停止",$!); }
を
1行目
if (!open(OUT, "> tmp_1.$$")) { &error("書き込み失敗"); }
2行目
if (!open(OUT, "> tmp_2.$$")) { &error("書き込み失敗"); }
に変更し、一時ファイル化する
最初の close(OUT); の直後で
open(IN, "tmp_1.$$") || error('読み込み失敗');
while (<IN>) {
    &jis($_);
    push(@tmp, $_);
}
close(IN);
$subject = &jis("Subject: 注文");
if (!open(OUT, "| $sendmail -s \"$subject\" -f \"$admin\" $admin")) { &error('Error'); }
foreach (@tmp) {
    print OUT $_;
}
close(OUT);
sleep(1);
@tmp = '';
open(IN, "tmp_2.$$") || error('読み込み失敗');
while (<IN>) {
    &jis($_);
    push(@tmp, $_);
}
close(IN);
$subject = &jis("Subject: 注文の写し");
if (!open(OUT, "| $sendmail -s \"$subject\" -f \"$admin\" $in{'Eメール'}")) { &error('Error'); }
foreach (@tmp) {
    print OUT $_;
}
close(OUT);
unlink "tmp_1.$$";
unlink "tmp_2.$$";

プログラムの最終行に
sub jis {
    local($msg) = @_;
    &jcode::convert(\$msg,'jis');
    return $msg;
}
質問者 saku  [削除]  投稿日 3/27(木) 22:18:36
ご回答ありがとうございました。
変更してみましたがやっぱりメールの送信が出来ません。
ここのプロバイダーのサーバーでは使えないのでしょうか?
それとも私の設定方法に問題があるのでしょうか??
ぜひ使いたいのでよろしくお願いします。
回答者 呑兵衛@大阪  [削除]  投稿日 3/30(日) 17:27:41
一つ間違いました。
> 最初の close(OUT); の直後で
は
最後の close(OUT); の直後で
として下さい。
それと、元のプログラムの 	sleep(1); は削除していいです。
私はhi-ho ユーザではないので確認できませんが
$sendmail = './ssendmail'; $adomin = '設置者のアドレス';
の設定は間違っていないですね。
hi-ho での「ドメイン管理者向けCGIセットアップ」も終わっていますね?
質問者 saku  [削除]  投稿日 4/1(火) 21:54:24
ありがとうございました。
でもやっぱりダメでした・・・。
もう方法はないでしょうか??
回答者 呑兵衛@大阪  [削除]  投稿日 4/2(水) 18:26:00
seller.cgi の
#●メール処理
$sendmail = '/usr/sbin/sendmail';

# メール送信処理
sub sendmail {
 : : この部分すべて
}
を私宛にメールで送っていただけませんか?拝見してみますが。

返信(回答)する

 


Web裏技