メールの最後にシグネチャ(ハンドルネーム)をつけるようにしてみた

はじめに

サークルの携帯向けMLをさくら鯖のfmlで運用しているのだけど、
送信者名が表示できないのが嫌だなぁと思っていて。

PC向けのなら、送信者のメールアドレスのとこにくっついてる送信者名を引っ張ってこれば済むのだけど、
携帯のはそれが省かれてるから、PC用に拾えるようにしていても意味がなくて。

また、スパムフィルタに引っかかる関係で送信元をMLのアドレスにしていることもあり、
送信者のメールアドレスだけ最後につけるようにしてあっても、いまいちよく分かりづらくて。

そこで、perlをもそもそいじって、ハンドルネームとアドレスの書いてあるリスト内を検索して
そのハンドルネームをメールの最後に付加するようにしてみた。
グーグル先生にきいてもPC用のしか教えてくれなかったんで。

ソースとか。

config.phの最後のほうに、


$START_HOOK = q%
#List Open
open(FH,"./handle_name.lst");
@data = ;
close(FH);
#Search Sender From Lists
foreach $data(@data) {
$data =~ s/\r//;
$data =~ s/\n//;
@lst = ();
@lst = split(/,/,$data);
last if ($From_address eq $lst[1]);
}
#if Sender Doesn't Exist, Put Address Only
if ($lst[0] eq "EOF") {
$Envelope{'Body'} = $Envelope{'Body'}."\n\n--\nSent from: ".$From_address;
} else {
$Envelope{'Body'} = $Envelope{'Body'}."\n\n--\nSent from: ".$lst[0]."\n".$lst[1];
}
%;
と追加する。
Memberファイル(だっけ)をいじって〜ってするのはちょっとよく分からなかったので、
handle_name.lstというファイルを作って、その中に
ハンドルネーム,メールアドレス
Ex,

hogehoge,hoge@hoge.com
foo,foo@foo.co.jp
EOF,EOF
のような形式でメンバーのハンドルとアドレスを書くようにした。
ヘタレなので、条件判定用にファイルの最後にEOFを書いておいた。

上のほうでそのファイルを開いて配列に読み込み、整形してアドレスを検索。
見つかったら、ハンドルとアドレスをメールの末尾に追加。
見つからなかったら、アドレスだけをメールの末尾に追加。
みたいな処理です。

あ。あぁ、いいのか。foreachで回してる文はマッチしなかったら最後のEOFを配列に入れるから。
みてのとおりプログラムはちょっと苦手です。

正しく付加できるかテストをして、うまくいったので、サークルのMLにも適用しています。
適用して2週間くらい経っていますがエラーなど出ていないので、これでいけるはず。です。

おかしいとことか、もっと効率的にする方法とかあればコメントなどで教えてください〜。