うちでは,家のファイルサーバをPostgreSQLを使って全文検索できるようにしている. テキスト,HTML,Excel,PDFファイルをインデックス化しているのだが,最近欲が出てメールも検索したくなってきた. ...うちはBecky!なので,単純にBeckyのメールボックスファイル(.bmf)をインデックス化すれば良いかと考えたが,そうはいかなかった.普通のメールは,本文がiso-2022-jpでエンコードされた状態でbmfファイルに入っているのだが,現実にはそういうメールばかりではなかった.
(1) Quoted Printableどうも,iso-2022-jpでエンコードしてさらにQuoted-Printable化したものが本文になっているというメールがある.これは,Quoted Printableの状態のままでbmfファイル内に入っているため,デコードして読める文字列にしてから,全文検索のインデックスに登録しなければならない.そこで,どのようにデコードすれば良いのか,Quoted Printableについて調べてみた. これを見てしばらく悩んだ結果,デコードするには
とすれば良いという結論に達した. Perlで書くと,こんな感じ.$bodyがQuoted-Printable文字列(複数行)とする. $body =~ s/=\n//g; $body =~ s/=(..)/pack("C",hex $1)/eg; 実際にはこの結果をさらに,charsetで指定されているコード(普通はiso-2022-jp)としてデコードする必要があるが,まぁそれはQuoted-Printableとは関係ないのだ. フッフッフ
(2) MIMEマルチパートメッセージしかし,また新たな試練が... |