2007年7月14日

    W-ZERO3のPDXメールバックアップ

    W-ZERO3の本体メモリは容量が少ないので以前から苦労していたのですが、先日とうとうメールが受信できなくなるところまで来てしまいました。これはやばいと思ってメールのバックアップを取ろうと思ったのですが、そこには大きな問題があったのです。Pocket OutlookなんだからPCとの連携も朝飯前だろうと高をくくっていたのですが、なんとPCにバックアップを取る機能がないではありませんか。W-ZERO3自体にはバックアップ機能がついているのですが、これはメールをPC上で読める状態に保存しておきたいという要求を満たすものではないので、使えません。これなら普通の携帯電話のほうがよっぽど楽にバックアップ取れるやんか…と思ったのですが、今さらメールを1つ1つ転送していくわけにもいかないので、なにか方法を考えることにしました。

    いろいろなサイトを見ていてわかったことは、

    ・メール本体は\Windows\Messagingフォルダにある
    ・受信メールは文字コードがJISでメールヘッダ+本文
    ・送信メールは文字コードがUTF-16LEで本文のみ

    ということです。受信メールの方は比較的簡単に取り込めそうですが、問題は送信メールです。メールヘッダがないので、送信先や送信日時がわからないのです。こういった情報はどうやら\cemail.volファイルに持っているようなのですが、構造がさっぱりわからないのでパス。とりあえず送信先は無理としても、送信日時はファイルの作成日時を使えば復元できるので、わかる範囲のヘッダ情報を補完すれば、なんとかなりそうです。というわけで最初はソフトを探したのですが、そういうソフトが全く見つからないのです。普通こういう時って1つぐらい引っかかってくるもんだけどなぁ…。仕方がないので自分で作ってみるかと思い、せっかくなのでこないだ勉強したperlを使ってみることにしました。

    ところどころ苦労はしたものの、やっぱりperlで書くのは楽ですねぇ。同じ内容をCで書けと言われたらどれだけ時間がかかっていたことやら。とりあえずメールが入ったフォルダに放り込んで実行すると、受信メールと送信メールを判別して受信メールはほぼそのまま、送信メールの方は文字コードをUTF-8に変換してヘッダを補完し、それぞれreceiveフォルダとsendフォルダに書き出す機能をつけて一応の完成を見ました。送信メールは最初ShiftJISで書き出していたのですが、どうも一部の文字が文字化けするので、UTF-8にしてあります。perlなので中身の雑さ加減を見られると恥ずかしいのですが、私以外にこれを使う人がいるかもしれないので一応公開しておきます→pdxconv.zip。これを動かすにはActivePerlが必要なので合わせてインストールしてください。まずW-ZERO3の\Windows\MessagingフォルダをPCに丸ごとコピーして、そこにpdxconv.plを放り込んだ後エディタで開いて各自のPDXメールアドレスに変更してから、
    >perl pdxconv.pl
    で動くはずです。ただしうちの環境でしかテストしてませんので、不具合がないとは言い切れません。その辺は理解した上でお使いください。