CGI-BBS > SO−HO > ショッピングバスケット > 簡易ショッピングバスケットでNet::SMTP仕様にしたい


カレッヂ
カレッヂ


質問者  投稿日 10/16(水) 12:10:13
簡易ショッピングバスケットを設置したいのですが、プロバイダがsendmailの仕様を禁止しているので、、Net::SMTP仕様にしたいと思っております。
それで、私なりに改造してみたのですが、最後に注文メールを送ろうと「注文する」をクリックすると「システム異常 申し訳ありませんが何らかの原因で処理できません。」と
エラーが出ます。
簡易ショッピングバスケットのcargo.cgiやwebform.cgiをどのように書き換えたらいいのか教えて下さい。よろしくお願い致します。

プロバイダ参照:
サーバのOS:(未選択)
パソコンのOS:Win95系
エディタ:
FTPソフト:FFFTP
サーバ移転:していない
改造:(未選択)
CGI習熟度:firsttime

回答者 まさ  [削除]  投稿日 10/16(水) 14:52:58
どこをどういう風に改造したのでしょうか?

ちなみにプロバイダーにはNet::SMTPがインストールされてますよね。
これは標準モジュールではないので普通には入っていませんが。

またsendmailを禁止しているプロバイダーにNet::SMTPが入っているのでしょうか?
それが入っていればsendmail同様メールが送れるので、sendmailを禁止する意味が
まったくないと思うのですが。

改造する前にもう一度確認した方がいいと思います。
もし確認済みなら申し訳ないです。

とにかく改造した部分を示さないと何とも言えませんね。

質問者  [削除]  投稿日 10/16(水) 15:07:13
ご回答ありがとうございます。
プロバイダはアサヒネットで、デフォルトでCPAN libnetが使えるようになっています。
またCGIの改造ですが、別にたいしたことはしておらず(改造のうちに入らないのかも)、
cargo.cgiとwebform.cgiの頭を下記のようにし、
その他スクリプトのURLなどを適宜変更したぐらいです。
#!/usr/local/bin/perl
use Net::SMTP;
use Net::POP3;
use constant SMTPsvr => 'ucgimail.mmjp.or.jp';

ご教示よろしくお願いします。

回答者 呑兵衛@大阪  [削除]  投稿日 10/16(水) 15:07:49
http://www.rescue.ne.jp/CGI-BBS/soho/cargo/20020925124126.shtml
と同じ質問者でしょうか?
上記で Net::SMTP のことに触れています。
エラーサブルーチンが働くのは、その前の実行命令が有効でなかったことを示しますので、
そこを再確認してください。
> 私なりに改造してみたのですが
スクリプトが示されていないので、これ以上具体的にお答えできません。
回答者 まさ  [削除]  投稿日 10/16(水) 15:25:04
ホントにそれだけしか変更していないのですか?
でしたらメールは遅れませんね。

一応最低限のメールを送るスクリプトを書いておきますので参考に。

use Net::SMTP;

#オブジェクトの作成
$smtp = Net::SMTP->new(
             'smtpsrv',               #SMTPサーバ
             Hello=>"hoge.co.jp");    #SMTPサーバのドメインを指定

#ヘッダ部の組み立て
$smtp->mail('foo@hogehoge.co.jp');    #送信元の指定
$smtp->to('baa@hogehoge.com');        #宛先の指定

#データ部の組み立て
$smtp->data();
$smtp->datasend("From:******\n");     #送信元
$smtp->datasend("To:********\n");     #宛先(データ部)
$smtp->datasend("Subject:*****\n");   #件名

$smtp->datasend("*************");     #本文

# データの終わり、メール送信
$smtp->dataend(); 

#SMTP接続の終了
$smtp->quit; 

質問者  [削除]  投稿日 10/17(木) 11:21:49
呑兵衛@大阪さま

お察しの通り、以前お世話になった者です。
その節は大変お世話になりました。
呑兵衛@大阪さまに教えていただいたようにCGIスクリプトに
#!/usr/local/bin/perl -c
use Net::SMTP; 
use Net::POP3;
として試してみたのですが、エラーが出てしまいました。
しかし、-cをはずして試してみると、買い物カゴに商品を
入れることはできたのですが、
最後に注文のメールを送ろうとするとダメでした。
-cを入れた状態で試すとエラーが出るということは、
やはり何らかの問題があるということなのでしょうね。

Net::SMTPを使ってこのショッピングバスケットを利用している方が
いるとの話は聞いたことがあるので、
私もなんとか頑張ってみようとは思っているのですが・・・。
何かご指導いただければ幸いです。
よろしくお願い致します。
質問者  [削除]  投稿日 10/17(木) 11:31:22
まさ様

ご回答ありがとうございます。
webform.cgiとcargo.cgiの先頭に以下のようにして試してみたのですが、
やはり最後にエラーが出てしまいました。

#!/usr/local/bin/perl
use Net::SMTP;

#オブジェクトの作成
$smtp = Net::SMTP->new(
             'smtpsrv',               #SMTPサーバ
             Hello=>"ucgimail.mmjp.or.jp");    #SMTPサーバのドメインを指定

#ヘッダ部の組み立て
$smtp->mail('mail@taikudo.com');    #送信元の指定
$smtp->to('mail@taikudo.com');        #宛先の指定

#データ部の組み立て
$smtp->data();
$smtp->datasend("From:mail@taikudo.com\n");     #送信元
$smtp->datasend("To:mail@taikudo.com\n");     #宛先(データ部)
$smtp->datasend("Subject:ご注文\n");   #件名

$smtp->datasend("*************");     #本文

# データの終わり、メール送信
$smtp->dataend(); 

#SMTP接続の終了
$smtp->quit; 


基本的なことが分かっていないので恐縮なのですが、
下記は先頭に全部入れ込んでもいいのでしょうか?
部分部分で、分けて入れなければならないのでしょうか?
申し訳ありませんが、再度ご指導頂ければ幸いです。
回答者 まさ  [削除]  投稿日 10/17(木) 11:50:45
その設置したスクリプトがどんなものかわからないので、他の部分でエラーが出ている
かもしれないので、一度「mail.cgi」として以下を組み込んで下さい。
ちなみに上記スクリプトではSMTPサーバーが書かれてないのでエラーになります。

#!/usr/local/bin/perl

use Net::SMTP;

#オブジェクトの作成
#SMTPサーバのドメインを指定
$smtp = Net::SMTP->new('mail.hogehoge.com'); 
            ~~~~~~~~~~~~~~~~~ 
#ヘッダ部の組み立て
$smtp->mail('mail@taikudo.com');    #送信元の指定
$smtp->to('mail@taikudo.com');      #宛先の指定

#データ部の組み立て
$smtp->data();
$smtp->datasend("From:mail@taikudo.com\n");     #送信元
$smtp->datasend("To:mail@taikudo.com\n");       #宛先(データ部)
$smtp->datasend("Subject:ご注文\n");            #件名

$smtp->datasend("テストメールです。");          #本文

# データの終わり、メール送信
$smtp->dataend(); 

#SMTP接続の終了
$smtp->quit; 

print "Content-type: text/html\n\n";
print "正常送信\n";
exit; 

これをmail.cgiとして動かして下さい。
ちゃんと動くはずです。

メールが文字化けしているようならEUCにしてから転送して下さい。

返信(回答)する


Web裏技