記事の最後へ▼ 
< 質 問 >
空メールでの登録許可の場合のMLへの返信について

前スレッド(#1441)の続きでも良かったのですが、
空メールでの登録・削除を許可したメーリングリスト(以下ML)を運用する場合
投稿資格を「だれでも」にする必要がありますが、
この状態でMLに対して返信すると
改行が一切なされなくなってしまって
ヘッダ、本文、フッタが一つながりになってしまうようですがいかがでしょうか?
数回返信してみると何回か目には文字化けが(これはメーラーのせいですが)起こります。
これも自分でCGIの訂正個所を特定しようと思ったのですが、
今までこの報告がなかったところをみると
これは私の環境だけなのかとも思いまして、
とりあえず質問だけにしてみました。
(わたしは初めてこの機能を使おうと試みているのですが、
もしかしたらあまりこの状態でMLを運用している方がいらっしゃらないのかしら?)
もし、他でも再現性のあるものでしたら
訂正個所及び内容をご教授下さい。

お時間がなければ検討すべきCGIのファイル名を教えていただけたらと思います。

よろしくお願いします。

Win2K SP4
Xmail 1.22
XmailCFG 2.22a
k4 0.84
perl 5.8.7_813

kurage (07.06/06)


【 cop (07.06/06) 】

kurage さん、

確かに再現しますね。
しかも、HTML 形式の空メールでは自動登録も失敗します。

しばらくぶりにスクリプトを眺め、動作テストをしてみましたが、
filter.in.cgi の以下の部分(588行)に問題があるかと思います。

sub subscribe {
    my ($chk,$email,$email1,$file,$msg,$tmp,@members);
    if (!@reg1){&get_msg();}
    
    foreach(@msgbody){
        chomp;
        $tmp .= $_;
    }
    $tmp =~ s/<.*>//g;
    $tmp =~ s/^\s+//;
    return if $tmp;

これを以下のようにしてみましたが、こちらではうまく行くようです。

sub subscribe {
    my ($chk,$email,$email1,$file,$msg,$tmp,@members);
    if (!@reg1){&get_msg();}
    my @tmp = @msgbody;
    
    if ($boundary){
        $tmp = &strip;
        $tmp =~ s/\(no message\)//g;
    } else {
        foreach(@tmp){
            $tmp .= $_;
        }
    }
    $tmp =~ s/[\n\r\s]//;
    return if $tmp;


【 kurage (07.07/06) 】

cop さん

さっそくありがとうございます。
言われたように書き直したらこちらでも
うまく働いています。


【 kurage (07.07/06) 】

書いている途中でうっかり送信してしまいました。

copさんの示したサブルーチンに問題があるのであろうかと思って、
変数の意味やら、配列の中身やらを探しているうちに
copさんが正解を出してくれました。
さすが開発者さまですね。
利用させてもらっているだけの身としては
「虫取り」くらいしか協力できません。
XmailCFGがなかったらWinでメールサーバを稼働させようとは思わなかったと思います。
これからもよろしくお願いします。
ありがとうございました。

記事の先頭へ▲ 
SUPER LABORATORY