メール送信フォームを設置したのですが、、、

[上に] [前に] [次に]
あゆ [E-Mail] 2000/02/27(日) 17:13:19
メール送信フォームを設置したのですが、CGIは正常に動作しているのに、メールが届きません。メールアドレスもあっています。
sendmail もプロバイダーに問い合わせたら存在しています。/usr/sbin/sendmail←これが私のところの設定方法です。
これに書き換えるとエラーになってしまうのです。
(-x $sendmail) {
unless (open(OUT, "| $sendmail -n -t"))
この記述部分を
$sendmail -t -f
にすると、送信確認画面は普通に表示されるけど、メールが届きません。

とほほさんのカウンターも使わせていただいているのですが、こっちは普通にメールにてアクセスをお知らせしてくれます。

どなたか、解る方がいましたら、教えて下さい。

ラウォッチ 2000/02/28(月) 09:24:06
もしよろしけば、CGIのURLとソースのURLを公開してください。
できなければ、
http://〜/〜/wwwmail.cgi?test
実行してみて結果を教えてください。

あゆ 2000/02/28(月) 13:12:24
ラウォッチさん、ありがとうございます。
ソースのURLは、ここです。
http://ayu-office.maid.ne.jp/test/wwwmail01.txt
CGIのURLは
http://ayu-office.maid.ne.jp/test/wwwmail.html
ここです。

http://〜/〜/wwwmail.cgi?test
これは、テストしてみました。CGIは、ちゃんと動いてます。
って、表示されます。
解りましたら、お願いします。

B-Cus 2000/02/28(月) 13:45:29
何を根拠に
> $sendmail -t -f
としたのですか?

seltza 2000/02/28(月) 14:01:41
ちょと遅れた。。seltzaといいます。
B-Cusさんの指摘。ごもっともですけど、もうちょい書いてあげてはどうでしょう?

つまり・・
sendmail の -f オプションは、Fromを指定するためのもの。

e.g.
$fromadr = 'hoge@bar.foo';
open(MAIL, "| $sendmail -f $fromadr");

今の場合 -t オプションと組み合わせるべきではないですね。
sendmailのオプション群はサーバーによって使えなかったり使えたりといろいろなため、とりあえずはオプションなしでテストしたりするのもよいかもしれません。

では。

ラウォッチ 2000/02/28(月) 14:05:26
現状の
if (-x $sendmail) {
unless (open(OUT, "| $sendmail -t -f")) {
    &errexit("メールの送信に失敗しました。");
}
を -f を取って、
if (-x $sendmail) {
unless (open(OUT, "| $sendmail -t")) {
    &errexit("メールの送信に失敗しました。");
}
にしてみてください。

-fオプションは単独では使用ぜず。エラーメールのアドレスとペアで記述します。
ただし、予めsendmailの構成ファイルに登録されていないと行けないみたい。
詳しくは知りません...。^^;

あと、
unless (open(OUT, "| $sendmail -n -t")) {

>これに書き換えるとエラーになってしまうのです。
どんなエラーがでましたか?

あゆ 2000/02/28(月) 20:24:25
[[解決]]
ラウォッチさん、seltzaさん、B-Cusさんありがとうございます。
みなさん、すごいです!!!
CGIは難しくて、なかなか理解できません(ーー;)

if (-x $sendmail) {
unless (open(OUT, "| $sendmail -t")) {
    &errexit("メールの送信に失敗しました。");
このように設定したら、メールが届きました。
-nや-tはそれぞれ、オプションなのですね。

unless (open(OUT, "| $sendmail -n -t"))
これにするとエラー500が出ます。
私の所は-nが使えないということなのでしょうか?
ごめんなさい、あんまりよく解っていなくて(T.T)

メールが届くようになって一安心です。(^-^)
でも、何も書かなくても送られてしまうのですね。。。

B-Cusさん
> $sendmail -t -f
これは、他のCGIを見てやってみたのです。(^-^;

とりあえず、解決です。
本当にみなさんありがとうございます。
本を見てもよく解らなかったからすごく助かりました。
CGIを理解できるように勉強します。

[上に] [前に] [次に]