とほほラウンジで発言時に自動メールを送信するには

[上に] [前に] [次に]
タック [E-Mail] 1999/11/07(日) 14:32:41
とほほラウンジで、発言がある毎にメールを管理者に送信したいのですが、ソースをどのように変えるといいでしょうか。

Aurai [E-Mail] 1999/11/07(日) 23:24:04
>sub appendMessage
の中にある
>    # 質問者にメールで知らせる
あたりのソースをいじってみましょう

タック [E-Mail] 1999/11/08(月) 13:32:29
素人なのでとてつもない時間がかかりそう・・・。どなたか、実際に改造して使っているかたはいらっしゃらないでしょうか?(^_^;

みなみ 1999/11/08(月) 20:27:24
> 素人なのでとてつもない時間がかかりそう・・・。
そんなに難しくはないと思います。
wwwlng.cgiの「質問者にメールで知らせる」の部分を見ると、
"Reply-To:"があれば$mailto=メールアドレスとして
$mailtoが空でなければそこにメールを送る
…というようになっているようなので、
これを、
・自分のメールアドレスを送信先にする
・$mailtoが空でなければ送信先を追加する
・条件によらずメールを送るようにする
というようにすればいいはずです。

# sendmailの宛先を複数にする方法は
# ラウンジの検索で見つけられます。

タック [E-Mail] 1999/11/09(火) 10:28:14
[[解決]]
みなみさんありがとうございます。「・・でなければ・・する」とかという記述もしたことがないので、今の知識では不可能です(^.^)。また、出直しできます。(一応解決・・・)

みなみ 1999/11/09(火) 16:18:33
それでは、以下の方法で試してみてください。
・「#グローバル変数」のあたりで、
 「$mailme="管理者のメールアドレス"」と書いておく。
 (「@」を「\@」とするのを忘れずに)
・「#質問者にメールで知らせる」を次のように書き換える。
 (ここでは字下げに全角スペースを使っています。
  実際は半角スペースかタブを使ってください)
==書き換え前==========
if ($mailto ne "") {
 seek(IN, 0, 0);
 $msg = "To: $mailto\n";
 $msg .= "Subject: TwnLounge Report\n";
 $msg .= "\n";
 while (<IN>) {
  (略。ここは書き換えなし)
 }
 &jcode'convert(*msg, "jis");
 open(OUT, "| $g_sendmail $mailto");
 print OUT $msg;
 close(OUT);
}
==ここまで============

==書き換え後==========
if ($mailto ne "") {
 $report = $mailme.','.$mailto;
} else {
 $report = $mailme;
}
seek(IN, 0, 0);
$msg = "To: $mailto\n";
$msg .= "Subject: TwnLounge Report\n";
$msg .= "\n";
while (<IN>) {
 (略。ここは書き換えなし)
}
&jcode'convert(*msg, "jis");
open(OUT, "| $g_sendmail $report");
print OUT $msg;
close(OUT);
==ここまで============

一応テストしてみてうまくいきました。

# 私も「とほほのperl入門」を見ながら書いているくらいで
# 知識量は他の解答者様の足元にも及びません…。

みなみ 1999/11/09(火) 16:21:20
>「$mailme="管理者のメールアドレス"」と書いておく。
「$mailme="管理者のメールアドレス";」
です。

タック [E-Mail] 1999/11/10(水) 07:42:24
[[解決]]
Internal Server Errorがでますが、ここまでわかれば、チェックする元気も出てきたので、いろいろやってみます。みなみさんありがとうございました。

みなみ 1999/11/10(水) 11:02:53
解決してるのにしつこくレスつけてすみません。
メールアドレスの「@」をエスケープしているか、
全角スペースを使っていないか、
括弧がきちんと対応しているか、
確認してみてください。
私が利用しているサーバでは、
http://www.coma.ais.ne.jp/~minami/test/wwwlng.txt
できちんと動いてくれたのですが。

タック [E-Mail] 1999/11/10(水) 11:49:17
お言葉に甘えて再質問させてください。エラーは回復しましたが、管理者メールアドレスに送信されてこないです。グローバル変数の場所にはアドレスも入っており「\@」の処理もしています。

タック [E-Mail] 1999/11/10(水) 12:12:33
(追伸) みなみさんのアドレスの分もダウンロードさせていただきテストしましたが、同様でした。

みなみ 1999/11/10(水) 12:45:29
あらら、どうしてでしょう…。
To:ヘッダが関係あるのでしょうか?
sendmailのことはよく知らないので、
どなたか詳しい方がこれをご覧になっていましたら
回答をお願いいたします。

代案として、
$mailme = "管理者のメールアドレス";
のかわりに
@report = "管理者のメールアドレス";
と書いておき、
前回書き換えた部分を
==ここから==================
if ($mailto ne "") {
 push(@report,$mailto);
}
foreach $to (@report) {
 seek(IN, 0, 0);
 $msg = "To: $to\n";
 $msg .= "Subject: TwnLounge Report\n";
 $msg .= "\n";
 while (<IN>) {
  (略)
 }
 &jcode'convert(*msg, "jis");
 open(OUT, "| $g_sendmail $to");
 print OUT $msg;
 close(OUT);
}
==ここまで==================
とするといいかもしれません。

タック 1999/11/10(水) 13:32:02
みなみさん、いろいろお手数をおかけしました。メールが届かないうんぬんはどうやら、私のところのメールのちょっと複雑な転送設定のためのようです。いろいろ試して、確かに2通届くのを確認しました。ありがとうございました。勉強になりました。

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