torutkのブログ

ソフトウェア・エンジニアのブログ

インターネット・メールのテキスト処理

アーカイブサービスのないメーリングリストアーカイブを作成するため、手持ちのメーラからMBox形式でデータを吐き出し、それをどうにか加工してWeb公開するための手順を検討しています。
世の中的には、PerlスクリプトMHonArcを使うのが主流(というかこれしかない?)のようですが、今回はJavaでチャレンジしてみようと思っております。

メールの書式って

いきなりひっかかるのが、メールの書式です。プログラムで処理するためには書式に関して厳格なルールが必要になります。でもってやり取りしているメールを眺めてみると、、、
From:の内容って千差万別ですね。しかも複数行に渡っているものもあるし、=?ISO-2022-JP?B? で始まるエンコードされたものもあるし、、、
Subjectは大抵エンコードされていますね。
ヘッダーと本文の境界ってルールがあるのかな。空行があると境界?
References:に複数の参照が書かれている場合って?

エンコードについては@ITのサイトに解説がありました。
MIME(Multipurpose Internet Mail Extensions)〜前編:インターネット・プロトコル詳説(3) - @IT
MIME(Multipurpose Internet Mail Extensions)〜後編:インターネット・プロトコル詳説(4) - @IT

MHonArcだったら

MHonArcお試しメモ

  1. Perlスクリプト
  2. MH形式、MBOX形式の入力に対応している
  3. 出力はHTML形式、1メールにつき1HTMLファイル生成。目次HTMLページは投稿順、スレッド順の2種類を出力する

MHonArc入手先は、MHonArc Home Pageです。本日現在、MHonArc-2.6.10が入手できます。
アーカイブ(tar.gz/tar.bz2/zip)を展開後、perlでinstall.meスクリプトを実行すると必要なファイルが必要なディレクトリにコピーされます。install.meを実行するといくつか質問されます。デフォルトでよさそうです。

とりあえず、安直にHTMLに変換するには、

 $ mhonarc foobar-ml.mbx
 This is MHonArc v2.6.10, Perl 5.008002 cygwin
 Converting messages to .
 Reading foobar-ml.mbx .......................................

となります。

こまかな設定は、リソースファイルを作成してそこに記述し、起動時にオプションでリソースファイルを指定します。

 $ mhonarc -outdir ./foobar -rcfile foobar.rc foobar-ml.mbx