そろそろ手持ちの電話を前に入手していた新しいものに変えようと思って、ケータイメールをバックアップしていた携帯万能17から、ドコモケータイdatalinkにメールデータを移行させたので、それのメモ。
–状況–
これまで携帯万能17で、たまに携帯のメールデータをPCにバックアップしていたが、携帯万能17は、今度新しく使おうとしていた電話に対応していなかったことが発覚。
仕方ないので、必要十分な機能がありそうな、ドコモケータイdatalinkに移行することを検討。
移行のためには、アドレス、メールデータの移行が不可欠。
アドレス帳については、古い方の電話のアドレス帳を読み込めばOKなので、移行は手間がかからず終了(実際には、携帯万能17から、csvで出力したアドレス帳を、datalinkの方でインポートしたが、結果的には不要だった)
問題はメールの移行。
ドコモケータイdatalink側のインポートは、outlookかoutlookexpressからのみ。
携帯万能17からは、メールのエクスポートはテキスト、csv、eml形式、outlookへ直接エクスポートの4通りが可能。
outlookは一見楽だけど、メール送受信日時を保持しておけないので論外。
eml形式は、outlook expressでメールメッセージを1通ずつ保存できるけど、エクスポートが1通ずつしかできないので、これまた論外。(数千通あるものを、いちいち手でやるのは現実的ではない。)
と、いうわけで、仕方ないのでcsv形式で出力して、これを整形することを選択。
–具体的な対応策–
1.携帯万能17で、csv形式でメール一式をエクスポート。
2.携帯万能17で、フォーマットに使うためのemlファイルを、メール1通だけエクスポート。
ここで、文字コードはcsvはsjis。emlはjis。改行コードは当然CR+LF(\r\n)
csvファイルは、ダブルクォートで日時、宛先、送信者、件名、本文 の5つのフィールドがある。
emlファイルは、メモ帳か何かで開けばわかるが、基本的には、From,To,Subject,DATEとメール本文の場所が決まっていて、これを埋めればいいだけ。
つまりは、csvファイルから書くフィールドの値をとって、フォーマット文から置換していけば、メール1通ごとにemlファイルを簡単に作成できる。
(なお、emlファイルの宛先、送信者については、メールアドレスをカンマ区切りで列挙するだけ、すなわち、csvに入っていたものをそのまま使うだけで十分だった。)
と、いうわけで次のステップ。ここから細かいスクリプトを書いたりするため、linux機を使った。
3. 2.で作成したemlファイルから、日時、宛先、送信者、件名、本文を置換用のキーワードに変えた変換元ファイルを作成。(__DATE__とか、そんなん。末尾の.の前の改行を一つ消しておく必要があった。)
4. 1. で作成したcsvファイルについて、日時を変換するため、UTF-8に文字コードを変更。
5. 4. のファイルについて、sedで “s/年/-/” “s/月/-/” “s/日//” “s/時/:/” “s/分//” して、gnu dateの入力で使える形に変換。
6. 5. のファイルについて、日時のフィールドだけとりだし(自分のメールの場合は、メール本文に”,”の並びがなかったので、awkで”,”区切りで読めば十分だった。)てたとえばDATE変数に入れ、LANG=C date -d $DATE +'”%a, %d %b %Y %T”‘ で日付の形式を変換。
7. 6.のファイルの行頭の”と行末の”を削除。(末尾の”は、sedでは ‘s/”\r$/\r/’のようにする必要があることに注意。ここではまった。)
8. ここで、rubyスクリプトを書いて、7.のファイルから2行目以降各行ごとに、””,””区切りで各フィールドの値を取り出し、3.で作ったフォーマットファイルを置換し、同時に文字コードをjisに変更。これで、csvの行数分だけの数のemlファイルが作成され、すべてのデータがemlとしてエクスポートできた。(rubyでやる必要もなくて、シェルスクリプトでも十分かけたことに後で気づいた。。。)
これでlinux機での作業終わり。次からはoutlook expressを使った作業。
9. 8.で作成したemlファイルたち(拡張子.emlをつけておくことを忘れずに)を、outlookexpressの適当なフォルダにドラッグして、outlookexpressのメール形式にまとめる。
10. ドコモケータイdatalinkは、「受信トレイ」「送信済みアイテム」という名前のフォルダからしかインポートできない(なぜ??)ので、outlookexpressのデータが入っているフォルダまで潜り、受信トレイ.dbxを別名にバックアップし、その後、10.のフォルダのファイルを受信トレイ.dbxに変更。
11. outlookexpressで、受信トレイにケータイのメールが入っていることを確認。(送信済みアイテムについても同じ作業を繰り返します。。。)
12.最後に、ケータイdatalinkでoutlookexpressからメールデータをインポートして完了。
–まとめ–
結局は、携帯万能17では、csvでエクスポート、これを整形してメール1通ごとにemlファイルを作成し、outlookexpressにインポート。最後に、outlookexpressからドコモケータイdatalinkにインポートしておしまい。
これでやっと新しい電話を使える。。。というか使う気になれる。。。