カレッヂ |
質問者 K
投稿日 10/16(水) 12:10:13
簡易ショッピングバスケットを設置したいのですが、プロバイダがsendmailの仕様を禁止しているので、、Net::SMTP仕様にしたいと思っております。 それで、私なりに改造してみたのですが、最後に注文メールを送ろうと「注文する」をクリックすると「システム異常 申し訳ありませんが何らかの原因で処理できません。」と エラーが出ます。 簡易ショッピングバスケットのcargo.cgiやwebform.cgiをどのように書き換えたらいいのか教えて下さい。よろしくお願い致します。
プロバイダ参照: |
回答者 まさ
[削除]
投稿日 10/16(水) 14:52:58
どこをどういう風に改造したのでしょうか? ちなみにプロバイダーにはNet::SMTPがインストールされてますよね。 これは標準モジュールではないので普通には入っていませんが。 またsendmailを禁止しているプロバイダーにNet::SMTPが入っているのでしょうか? それが入っていればsendmail同様メールが送れるので、sendmailを禁止する意味が まったくないと思うのですが。 改造する前にもう一度確認した方がいいと思います。 もし確認済みなら申し訳ないです。 とにかく改造した部分を示さないと何とも言えませんね。 |
質問者 K
[削除]
投稿日 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; |
質問者 K
[削除]
投稿日 10/17(木) 11:21:49
呑兵衛@大阪さま お察しの通り、以前お世話になった者です。 その節は大変お世話になりました。 呑兵衛@大阪さまに教えていただいたようにCGIスクリプトに #!/usr/local/bin/perl -c use Net::SMTP; use Net::POP3; として試してみたのですが、エラーが出てしまいました。 しかし、-cをはずして試してみると、買い物カゴに商品を 入れることはできたのですが、 最後に注文のメールを送ろうとするとダメでした。 -cを入れた状態で試すとエラーが出るということは、 やはり何らかの問題があるということなのでしょうね。 Net::SMTPを使ってこのショッピングバスケットを利用している方が いるとの話は聞いたことがあるので、 私もなんとか頑張ってみようとは思っているのですが・・・。 何かご指導いただければ幸いです。 よろしくお願い致します。 |
質問者 K
[削除]
投稿日 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裏技 |