BBRK 20-12-28


fml の Subject処理不具合  

メールを送信する側のメーラーが Gmail や Outlook の場合、Subject に付いているタグを fml が認識できず、複数のタグが付与されてしまう現象が鬱陶しくなってきたので対策してみました。

こちらのサイト の「2014年06月29日  本日のお題:fml4のSubject処理改造」を参考にしました。
内輪MLで使用している fml のバージョンは 3.0 でしたが、対応部分のソースコードは一字一句、完全に一緒だったのと、内容からして問題なさそうでしたので、そのまま取り込んでみました。

これでしばらく様子を見てみます。

fml.pl 修正方法
修正前
# Subject:
# 1. remove [Elena:id]
# 2. while ( Re: Re: -> Re: ) (THIS IS REQUIED ANY TIME, ISN'T IT? but...)
# Default: not remove multiple Re:'s),
# which actions may be out of my business
if ($_ = $e{'h:Subject:'}) {
    if ($STRIP_BRACKETS || 
        $SUBJECT_FREE_FORM_REGEXP || $SUBJECT_HML_FORM) {
        if ($e{'MIME'}) { # against cc:mail ;_;
            &use('MIME'); 
            &StripMIMESubject(*e);
        }
        else { # e.g. Subject: [Elena:003] E.. U so ...;
            print STDERR "IN: $_\n" if $debug;
            $e{'h:Subject:'} = &StripBracket($_);
            print STDERR "OUT: $e{'h:Subject:'}\n" if $debug;
        }
    }
    # Even if pass through, always strip of Re:* 
    else {
        $e{'h:Subject:'} = &CutOffRe($_);
    }
}
修正後
# Subject:
# 1. remove [Elena:id]
# 2. while ( Re: Re: -> Re: ) (THIS IS REQUIED ANY TIME, ISN'T IT? but...)
# Default: not remove multiple Re:'s),
# which actions may be out of my business
if ($_ = $e{'h:Subject:'}) {
    if ($STRIP_BRACKETS || 
        $SUBJECT_FREE_FORM_REGEXP || $SUBJECT_HML_FORM) {
        if ($e{'MIME'}) { # against cc:mail ;_;
            &use('MIME'); 
            &StripMIMESubject(*e);
        }
        else { # e.g. Subject: [Elena:003] E.. U so ...;
            print STDERR "IN: $_\n" if $debug;
            use Encode qw(decode);
            use Jcode;
            my $code, $tmpsubject;
            $tmpsubject = decode('MIME-header',$_);
            $code = getcode($tmpsubject);
            if ($code eq "ascii") {
                $e{'h:Subject:'} = &StripBracket($_);
            } else {
                $e{'h:Subject:'} = jcode(&StripBracket($tmpsubject))->mime_encode;
            }
            print STDERR "OUT: $e{'h:Subject:'}\n" if $debug;
        }
    }
    # Even if pass through, always strip of Re:* 
    else {
        $e{'h:Subject:'} = &CutOffRe($_);
    }
}

■関連記事
BBRK 07-04-07 : fml インストール
BBRK 14-12-29 : fml の makefml がエラー


BBRK に戻る / BBRK 20-12-28 の全記事に戻る