vine-users ML アーカイブ



[vine-users:052186] CGI の SENDMAIL で質問です。

  • From: jeison <jeison@xxxxxxxxxxxxxx>
  • Subject: [vine-users:052186] CGI の SENDMAIL で質問です。
  • Date: Tue, 16 Jul 2002 20:30:46 +0900
こんばんわ。JEISON@OSAKAです。

sendmailで教えてください。
Apacheのerr.logに"Premature end of script headers: sendmail.cgi" 
のエラーが出てメールが送信できません。

今日一日悩んでいます。HP等を検索しましたが、解決の通が分かりませんでした。
下のCGIプログラムは下記アドレスにあったものでテストしています。

宜しくお願いします。

OS:VineLinuX2.5(FPD)
Machine:PowerMac8500

http://www5a.biglobe.ne.jp/~n_rieko/cgi/sendmail.htm#about
<CGI-SCRIPT>

#!/usr/bin/perl

# 初期設定 -----------------------------------------------#

#
# sendmailへのパス
#
$sendmail = '/usr/lib/sendmail';

#
# jcode.plへのパス
#
$jcode = './jcode.pl';

#
# メールの送付先
#
$to = 'jeison@xxxxxxxxxxxxxx';

#
# メールの題名
#
$subject = 'CGIメール送信サンプル';

#
# 確認ページより戻るでリンクされるURLを指定
#
$back = 'http://www5a.biglobe.ne.jp/~n_rieko/';

# 処理開始 -------------------------------------#

# //////////////////////////////////////////////#
#  事前処理
# //////////////////////////////////////////////#

# 文字コードライブラリの読込み
 require $jcode;
# //////////////////////////////////////////////#
#  QUERY復元処理
# //////////////////////////////////////////////#

if($ENV{REQUEST_METHOD} eq "POST"){
    read(STDIN,$input,$ENV{CONTENT_LENGTH});
} else {
    $input = $ENV{QUERY_STRING};
}

foreach ( split('&', $input ) ){

    ($name, $value) = split('=',$_,2);
    $value =~ s/\+/ /g;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
    $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
    $html{$name} = $query{$name} = $value;

}

# //////////////////////////////////////////////#
# 送信データの作成
# //////////////////////////////////////////////#

# ---------- 送信者氏名 ---------- #
if ($query{name}){
    $mail_body = "\n《 お名前 》\n$query{name}\n";
}

# ---------- メールアドレス ---------- #
if ($query{mail}){
    $mail_body .= "\n《 メールアドレス 》\n$query{mail}\n";
}

# ---------- URL ---------- #
if ($query{url}){
    $mail_body .= "\n《URL 》\n$query{url}\n";
}

# ---------- コメント ---------- #
if ($query{comment}){
    $mail_body .= "\n《 コメント 》\n$query{comment}\n";
}

# //////////////////////////////////////////////#
# MAIL送信
# //////////////////////////////////////////////#

&jcode'convert(*mail_body,'jis');
&jcode'convert(*subject,'jis');

open(MAIL,"| $sendmail -t") || &error_exit("sendmailの起動に失敗しました");

# ヘッダ情報出力
print MAIL "To: $to\n";
print MAIL "From: $query{mail}\n";
print MAIL "Subject: $subject\n";
# 本文出力
print MAIL "$mail_body\n";

close(MAIL) || &error_exit("メールの送信に失敗しました");

# //////////////////////////////////////////////#
# HTML出力
# //////////////////////////////////////////////#

print "Content-type: text/html\n\n";
print '<HTML><HEAD>'."\n";
print '<TITLE>送信完了</TITLE>'."\n";
print '</HEAD><BODY>'."\n";
print '<P>'."\n";
print '<CENTER><H2>正常のに送信しました。</H2></CENTER>'."\n";
print '</P>'."\n";
print '<DIV ALIGN="right"><H3>';
print '<A HREF="' .$back. '">戻る</A>';
print '</H3></DIV>'."\n";
print '</BODY></HTML>'."\n";

exit;

# //////////////////////////////////////////////#
# サブルーチンの定義
# //////////////////////////////////////////////#

# エラー処理------------------------------------#
sub error_exit {

    print "Content-type: text/html\n\n";
    print '<HTML><HEAD>'."\n";
    print '<TITLE>Error Request</TITLE>'."\n";
    print '</HEAD><BODY>'."\n";
    print '<P>'."\n";
    print '<CENTER><H2>'.$_[0].'</H2></CENTER>'."\n";
    print '</P>'."\n";
    print '<DIV ALIGN="right"><H3>';
    print '<A HREF="javascript:history.back()">戻る</A>';
    print '</H3></DIV>'."\n";
    print '</BODY></HTML>'."\n";
    exit;

}


[mozillaのアドレス欄]
http://localhost/~mail/sendmail.cgi?mail=jeisonni@xxxxxxx&name=knave&comment=sample