メール送信フォームがうまく動きません。

[上に] [前に] [次に]
みっちゃん [E-Mail] 2000/02/06(日) 17:07:45
メール送信フォームが動きません。
ここのサーバーはFrontpage Serverは対応していないということですが、wwwmail.htmをFrontpageで作ったからでしょうか?
http://www.projecta.co.jp/moug/public_html/dm/wwwmail.htm
教えてください。

ラウォッチ 2000/02/06(日) 17:29:08
今、以下のようになっています。

<p>電子メールアドレス(半角)<br>
<input type="text" size="20" name="T1"> 例:moug@projecta.co.jp</p>
<FORM METHOD=POST ACTION="wwwmail.cgi">
<p>氏名(苗字と名前の間は空白)<br>

inputタグをFORMタグのあとに移してみたください。
あと、</FORM>タグを最後に付けて下さい。

みっちゃん 2000/02/06(日) 18:31:48
>inputタグをFORMタグのあとに移してみたください。
>あと、</FORM>タグを最後に付けて下さい。

やってみたけどできません。ごめんなさい。
設置方法のとおりやっているのですが・・・
Frontpageでhtml作るとタグが小文字になるんですね。今まで大文字で作っていたんですけど大丈夫でしょうか? 

ラウォッチ 2000/02/06(日) 19:43:18
HTTP 500 内部エラーがでました。

これは、いろいろ原因が考えられます。

CGIのカスタマイズミス、たとえば ; がないとか。
jcode.plのパスが間違っているとか。
wwwmail.cgiのパーミッションに実行権がないとか。
#!/usr/〜〜〜/perlのパスが間違っているとか。
あと、/public_html/dm/にちゃんとアスキーモードでwwwmail.cgiがftpされていますか。

みっちゃん 2000/02/06(日) 21:08:20
おっしゃられたことはすべて確認してみましたが×です。難しいです。
以前ラウンジや検索フォームを設置したときはラクチンだったのに。
これとは別の確認ですが、ラウンジを設置したときのPerlのバージョンは5だったんですが今回のメール返信にはそれらしきことの説明が書かれていないのですがそのままバージョン5でよろしいですか?
それとjcode.plのようにmimew.plにもパーミッションの設定やパスをちゃんとさせるものがあるのでしょうか?

ラウォッチ 2000/02/07(月) 09:07:57
mime.plはjcode.pl同じ感じでいいです。
もちろん、アスキーモードでftpですよ。

できれば、ラウンジとこのwwwmail.cgiを各々拡張子を .txt にして公開してください。

http://www.projecta.co.jp/moug/public_html/dm/wwwmail.txt
てな感じに。

ひとつ、気になるのですが、ラウンジは、メール機能(sendmail)は動作しましたか?

みっちゃん 2000/02/07(月) 10:43:06
メール機能は500内部サーバエラーで動作しません。
うちのサーバにはmimew.plのパスはないといわれてしまったのですが。
CGIはっておきます。
#!/usr/local/bin/perl5
# カスタマイズ
#=====================================================================
# ★ perlのパス名
#    このファイルの先頭の1行を、あなたが利用するサーバーにインストー
#    ルされた perl コマンドのパス名に応じて変更してください。例えば、
#    私が加入している BIGLOBE では、#!/usr/mesh/bin/perl となります。
#    解らない場合は、プロバイダやサーバの管理者にお問い合わせください。
#   「#!」の前には、空文字や空行がはいらないようにしてください。

# ★ 送信先メールアドレス
#    $mailto = 'abc@xxx.yyy.zzz'; のようにあなたのメールアドレスに
#    書き換えてください。
$mailto = 'sugiyama@projecta.co.jp';

# ★ サブジェクト(件名)
#    送信されるメールのサブジェクトを指定してください。
$subject = 'DM address';

# ★ メール送信コマンド
#    このコマンドが存在しない場合は、このスクリプトは動作しません。また、
#    存在していても、メール送信の設定が行われていない場合があります。詳
#    細はプロバイダやサーバーの管理者にお問い合わせください。
$sendmail = '/usr/lib/sendmail';

# ★ 漢字コード変換ライブラリ
#    ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/ から入手可能です。
#    wwwmail.cgi と同じディレクトリに置いてください。
$jcode = 'jcode.pl';

# ★ MIMEコード変換ライブラリ
#    http://www.cc.rim.or.jp/~ikuta/mime_pls/ から入手可能です。
#    wwwmail.cgi と同じディレクトリに置いてください。
$mimew = 'mimew.pl';

# ★ 送信結果メッセージ(ヘッダ)
#    <<END_OF_DATA 〜 END_OF_DATA の間を好みにあわせて変更してください。
$header = <<END_OF_DATA;
<HTML>
<HEAD>
<TITLE>メール送信結果</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>ダイレクトメール送付先送信結果</H1>
<HR>
下記のダイレクト送付先を送信しました。
ありがとうございました。
<HR>
END_OF_DATA

# ★ 送信結果メッセージ(フッタ)
#    <<END_OF_DATA 〜 END_OF_DATA の間を好みにあわせて変更してください。
$footer = <<END_OF_DATA;
<HR>
<A HREF="../memberindex.htm">[戻る]</A>
</BODY>
</HTML>
END_OF_DATA

#====================================================================
# 自己診断機能。
#====================================================================
# メール送信がうまく動作しない時に、
# http://〜/〜/wwwmail.cgi?test の形式で呼び出してください。
if ($ARGV[0] eq "test") {
print "Content-type: text/html\n";
print "\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>WwwMail自己診断</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";
print "CGIは正常に動作しています。<BR>\n";
unless (-f $sendmail) {
print "<P>$sendmail がありません。<BR>\n";
}
unless (-f $jcode) {
print "<P>$jcode がありません。<BR>\n";
}
unless (-f $mimew) {
print "<P>$mimew がありません。<BR>\n";
}
print "</BODY>\n";
print "</HTML>\n";
exit 0;
}

#====================================================================
# 本体
#====================================================================

#
# ライブラリの呼び出し
#
require $jcode;
require $mimew;

#
# 入力値を読み取る
#
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
@a = split(/&/, $query_string);
foreach $x (@a) {
($name, $value) = split(/=/, $x);
$name =~ tr/+/ /;
$name =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*name, "jis");
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$value =~ s/[\r\n]+/\n/g;
&jcode'convert(*value, "jis");
if ($FORM{$name} eq "") {
$FORM{$name} = $value;
$FORM[$cnt++] = $name;
} else {
$FORM{$name} .= (" " . $value);
}
}
}

#
# EMAILが指定されていなければ、(unknown)とする。
#
if ($FORM{'EMAIL'} eq "") {
$FORM{'EMAIL'} = "(unknown)";
}

#
# メールヘッダを作成する
#
{
&jcode'convert(*subject, "jis");
$mailhead  = "To: $mailto\n";
if ($FORM{'EMAIL'} ne "(unknown)") {
$mailhead .= "Cc: $FORM{'EMAIL'}\n";
}
$mailhead .= "From: $FORM{'EMAIL'}\n";
$mailhead .= "Subject: $subject\n";
$mailhead .= "\n";
}

#
# メールボディを作成する
#
{
for ($i = 0; $i < $cnt; $i++) {
$mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n";
}

# "." のみの行は ". " に変換する。
# 2回繰り返さないと、2行連続で "." のみの行に対応できない
# "." を ".." に変換する処理が一般的だそうだが、あえて、
# "." を ". " に変換する。
$mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g;
$mailbody =~ s/(^|\n)\.(\n|$)/$1. $2/g;
}

#
# メールを送信する
#
if (-x $sendmail) {
unless (open(OUT, "| $sendmail -n -t")) {
    &errexit("メールの送信に失敗しました。");
}
unless (print OUT &mimeencode($mailhead)) {
    &errexit("メールの送信に失敗しました。");
}
unless (print OUT $mailbody) {
    &errexit("メールの送信に失敗しました。");
}
close(OUT);
}

#
# ブラウザ画面に送信結果を書き出す
#
{
&jcode'convert(*header, "jis");
&jcode'convert(*footer, "jis");

$mail = $mailhead . $mailbody;
&jcode'convert(*mail, "euc");
$mail =~ s/&/&amp;/g;
$mail =~ s/"/&quot;/g;
$mail =~ s/</&lt;/g;
$mail =~ s/>/&gt;/g;
$mail =~ s/\n/<BR>/g;
&jcode'convert(*mail, "jis");

print "Content-type: text/html\n";
print "\n";
print "$header\n";
print "$mail\n";
print "$footer\n";
}

#
# エラーメッセージを出力して終了
#
sub errexit {
$msg  = "<HTML>\n";
$msg .= "<HEAD>\n";
$msg .= "<TITLE>メール送信結果</TITLE>\n";
$msg .= "</HEAD>\n";
$msg .= "<BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\">\n";
$msg .= "メールの送信に失敗しました。\n";
$msg .= "ブラウザの [戻る] ボタンで戻ってください。\n";
$msg .= "</BODY>\n";
$msg .= "</HTML>\n";

&jcode'convert(*msg, "jis");

print "Content-type: text/html\n";
print "\n";
print "$msg\n";

exit(0);
}

</XMP></BODY></HTML>

ラウォッチ 2000/02/07(月) 11:26:50
>メール機能は500内部サーバエラーで動作しません。

ラウンジ設置の時に500だったんですか、では、wwwmail.cgiも動きません!
プロバイダでsendmailをサポートしていないんですよね!

>うちのサーバにはmimew.plのパスはないといわれてしまったのですが。

これは、ご自分でftpするんですよ!
以下のwwwmail.cgiと同じところに有ります。
http://www.tohoho-web.com/wwwmail2.htm
でも、sendmailが使えないとどうにもなりません!?

みっちゃん [E-Mail] 2000/02/07(月) 12:23:52
>メール機能は500内部サーバエラーで動作しません。
すいません。嘘ついてました。ラウンジのメール機能は動きます。
minew.plをwwwmail.cgi、jcode.plと一緒のディレクトリにFTP転送(アスキーモード)するだけじゃだめですか?/usr/local/lib/〜ってサーバにインストールとか、mimew.plを書き換えるとか?
朝からmimew.plについてずっとしらべてて泣きそうです。
もともと総務担当なのに・・・

ラウォッチ 2000/02/07(月) 13:16:20
う〜ん。わかりません!
>mimew.plをwwwmail.cgi、jcode.plと一緒のディレクトリにFTP転送(アスキーモード)するだけじゃだめです
これで、いいと思います。

上手く行っているラウンジのソースをリンクで公開してもらえますか。
wwwlng.cgiを名前変えて(wwwlng.txt)。
あくまでも、リンクですよ。直接のペーストだとここのディスクスペース食います!

みっちゃん 2000/02/07(月) 19:39:53
ラウォッチさんおそくなってすいません!
ラウンジのソースです。http://www.projecta.co.jp/moug/public_html/dm/wwwlng.txt
ご迷惑おかけします。

みっちゃん 2000/02/08(火) 00:17:48
[[解決]]
ありがとうございました。
結局すべて最初からやり直しました。jcode.plをパーミッション設定したのがいけなかったようです。(ラウンジではしたんだけど)パスの設定もしてません。本当にありがとうございました。

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