電子書籍の厳選無料作品が豊富!

sendmailを悪戦苦闘の末、ようやく使えるようになりました。それはめでたいのですが、どうもレンタルしているocnのサーバーではメールアドレスの贈り先が存在しない(空ではなく送り先メールアドレスの存在)とエラー画面になってしまうようなんです。

&mail_sub というsub関数を作っていてこれをcgiから呼び出しています。送れないまでも、エラーで画面が止まってしまうのは避けたいんです。if(&mail_sub)みたいにエラーを感知できたら良いのですが・・。

分かる方、どうか教えて(助けて)下さいー!

A 回答 (5件)

気になったんですが、そのような送り先が存在しない場合のエラーメールの送信先は定義しないんですか?



sendmail のような、共有で使用するリソースの場合、誰が sendmail コマンドを叩いてエラーが起こったのかがわからない (多分、CGI の実行ユーザは、利用者で共有でしょうから…) 場合には、sendmail を発動させてるプロセスを kill している可能性があるかもしれません。

勝手な想像なので断言は出来ないですが、プロセスが kill されてるとかで500 エラーが返るのかもとふと思いました。

sendmail に -t オプション以外に、-f オプションで envelope-from を定義してあげれば、もしかしたら起こらないかも…

という事で、仮に、mahouさんのメールアドレスをmahou@somedomain.domだとした場合、

# sendmail起動
if (!open(MAIL,"| $sendmail -t")) { print "メール送信に失敗しました"; }

の行を、

# sendmail起動
if (!open(MAIL,"| $sendmail -t -fmahou\@somedomain.dom")) { print "メール送信に失敗しました"; }

みたいにしたら、うまくいくかも。。。

勝手な想像だけなので、「お試しあれ」感覚でとらえてください。
    • good
    • 0
この回答へのお礼

返信ありがとうございます!
今現在は妥協してしまい、そのまま使用することにしました。ただ、わかったことは、「相手先が存在しないとエラー」なのではなく、「メールアドレスの形」になってないと起こるエラーでした。

例えば、aaa@aaa.tekitouだとメールは送信されますが、aaa.tekitouだとエラー画面になってしまうのです。その辺、そのメールアドレスが存在しないとエラーと勘違いしてました。

次回、また開発があるのでそのときに試してみますね。
そしたら必ずnipotanさんに返信します。お待ち下さい。

お礼日時:2002/09/03 13:06

KCatchを利用してみては、どうでしょうか?



参考URL:http://digit.que.ne.jp/work/index.cgi?KCatch
    • good
    • 0
この回答へのお礼

見てみたんですが、おいらの頭ではイマイチよく分かりませんでした…。ズビバセン。

お礼日時:2002/09/03 13:07

エラー・メッセージは、どうなってますか?


CGI自体エラーになってなくても、正しいHTTP応答の形式になってないと、Webサーバーが500を返すこともあります。

基本的に、見たままのエラーメッセージや、具体的な入力内容、Webサーバーやメール・サーバーのログなどの補足情報も説明しとかないと、思い付く原因はたくさんありますから。
結構、errorlogだけで、あっさりと原因が判明することもありますし。

この回答への補足

osamuyさん、返信ありがとうございます。

Internal Server Errorで画面が真っ白になってしまってます。入力されたメールアドレスにメールを送るシステムなんですが、入力ミスかもしれないし、こうなることだけは避けたいのですが…。

perlでエラーをキャッチできないなら、サーバーの設定でしょうか。そうなるとレンタルサーバーなので無理になってきそうです、困りました…

補足日時:2002/08/29 12:06
    • good
    • 0

送り先のメールアドレスが存在しない場合、


エラーを返すのはCGIではなくメールサーバです。

なので、CGIが存在しないメールアドレスを関知し
エラーを返すことで「エラーで止まる」ということはありません。

# 1 の方が言っているように
OCNは自作CGIが使えない可能性がありますし、
CGIが使えてもsendmailが使えないサーバなどありますので

一度仕様などを確認してみてはどうでしょうか。


それと、sendmailのパスは合ってますか?

この回答への補足

sendmailのパスは合ってます。
メール、ちゃんと送れてます。

ただ、メールアドレスが存在しないときに、
エラーになるんですよね。。。>SSIエラー?

同じ現象を味わったことある人居ますか?

補足日時:2002/08/29 00:27
    • good
    • 0

OCNは、Page ONサービスでは、自分が用意したCGIは使用できないと思うのですが、


他のプランで、CGI可能にしてもらっているのでしょうか?

それとも、OCNの用意している「フォームCGIメール」のことでしょうか?

この回答への補足

高額な、他のプランです。
メールプログラムは自分で作成したものです。
# sendmail起動
if (!open(MAIL,"| $sendmail -t")) { print "メール送信に失敗しました"; }
print MAIL "To: $t_to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $mail_sub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $ver\n\n";
print MAIL "\n";
print MAIL "$mail_body\n";
print MAIL "\n";
close(MAIL);

どうでしょうか?

補足日時:2002/08/28 19:29
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!