2005/10/05
# [xyzzy] AL-Mail to KaMail
以前使っていた AL-Mail のメールデータを長いこと放置していたが,これを KaMail に取り込もうと思い立つ。AL-Mail も 1 メール 1 ファイルで保存されているため,案外ファイル名を変更するだけでいけるのでは,などと甘い期待を寄せて KaMail に放り込んでみた。しかし,キャッシュファイルを作成し,サマリの表示まではうまくいったものの,本文が化けてしまいダメダメ。
AL-Mail のデータは,Subject が復号化された状態で保存されているため,これが悪さをしているのかとも思ったが,どうやら,エンコーディングが Shift-JIS になっているのが原因だったもよう。で,またしてもへなちょこなものをつくって,指定フォルダ中のファイル名を連番にしつつ,エンコーディングを ISO-2022-JP にすることにした。
(defun almail2kamail () "AL-Mail のメールファイルを KaMail 用に変換" (interactive) (let* ((dir (read-directory-name "directory: ")) (lst (directory dir :absolute t :wild "*.alm" :file-only t))) (when lst ;; エンコーディングの変更 (let ((buf (create-new-buffer "*alm2km*"))) (set-buffer buf) (dolist (f lst) (erase-buffer buf) (ed::insert-file-contents f t) (write-region (point-min) (point-max) f nil *encoding-jis* 1)) (delete-buffer buf)) ;; ファイル名の変更 (let ((i 1)) (dolist (f lst) (rename-file f (merge-pathnames (format nil "~D" i) dir)) (incf i))))))
almail2kamail は,ファイルを直接書き換えてしまうので,以下の手順で。
- AL-Mail の Mailbox 以下のメールファイルを,KaMail のローカルフォルダ中に新たにフォルダを作成してコピー。
- M-x almail2kamail して,新たに作成したフォルダを指定。
- 新たに作成したフォルダを,設定ファイル Folders に追加するか,フォルダモードから a するなどして KaMail のローカルフォルダとして登録。
- 新たに登録したフォルダを開くと,「Cache fileを作成します」といわれるので,作成してもらう。
これを AL-Mail のメールフォルダの数だけ繰り返す。で,たぶんオッケー。