![]() |
| カレッヂ |
質問者 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裏技 |