ドコモメールをau携帯に移行させる
公開日:
:
未分類
1年ほどつかった携帯ドコモP505iSに取り立てて不満があったわけでもないのですが、パケット代も毎月1万超えるし、FOMAに換えるほど都会でもなし。第一、現行ドコモには魅力的な機種もないので、auに換えてみました。W31CAはまだまだ新規でも高く、W21CAIIでauに入門です。
ここ6-7年、ずっとドコモを使ってきたので、メールの移行はすんなり出来てきたのですが、今回は大変です。W21CAIIに関して(というか、これはau全般の仕様?)もっともがっかりしたのは、いったんminiSDに移したメールは本体のメモリに戻せないということでした。メールの偽装を防ぐためなんでしょうか?ちょっといったんminiSDに移しといてー、とかやってると一生本体メモリに戻せません!
したがって、メールの移行といっても、本体ではなく、miniSDまでしか持っていくことができません。でもまあ、こういう問題点っていうのは乗り換え当初だけだから、後々になれば、まったく気にすることのない問題なのかもしれないですね。
実はメールを移すためだけに「ケータイ・リンク10」までダウンロード購入してしまったんですが、メール書き込みには対応してなくてがっかり。でもまあ、アドレスバックアップ取れたからいいか。
で、肝心の移行手順です。
P505iSの出すVMGファイルのフォーマットそのまま、W21CAIIのminiSDの該当個所(PRIVATE\AU\ML\M_SE\RE_S_0xx)にコピーしてもメールとして扱ってもらえません。おんなじVMGフォーマットの癖に微妙に違うんです。VMGヘッダーとフッターの修正、さらに、P505iSのVMGは本文がエンコードされているので、デコードせねばなりません。
格闘の結果、メール本体のヘッダーに関しては順不同のようでしたが、MIME宣言っていうんでしょうか?これが違うために本文表示できなかったので、これも要修正です。charsetの辺りのスペースとかダブルクォーテーションとか大文字小文字とかこのあたり書き換えます。
P505is
MIME-Version:1.0
Content-Type:text/plain;charset=”shift-jis”
Content-Transfer-Encoding:quoted-printableW21CAII
MIME-Version:1.0
Content-Type: text/plain; charset=Shift_JIS
Content-Transfer-Encoding: 8bit
前述の通り、VMGヘッダーとフッターも書き換えます。
なお、書き換えには
P504iS/mypic.vnt – しろくろのへや
http://home.arino.jp/?cmd=read&page=P504iS%2Fmypic.vnt
に公開されているPHPスクリプトを独自に改変させていただきました。ありがとうございます。この公開版をPHPが動くサーバにアップロードして、VMGファイルを読み込ませると、本文がデコードされるとともにVMGヘッダーとフッターが取り去られます。
From:hoge@hoge.hoge.jp
To:
Subject:
Date:Fri, 12 Aug 2005 12:06:00 +0900
MIME-Version:1.0
Content-Type:text/plain;charset=”shift-jis”
Content-Transfer-Encoding:quoted-printable
本文
こんな感じになります!うーん。すばらしい。でも、これだとまだ読み取れないので、前後して申し訳ないのですが、上述の通り、PHPスクリプトに手を加えます。
1回こっきりのことなんで、泥縄式にスクリプトをいじっていきます。ほんとは一括変換とかすればいいんですけど、もうこの際、めんどくさいのでオリジナルを尊重(汗)して、ひとつひとつサーバにアップして保存して、、、の繰り返しです。いいんです。泥縄式なんですから・・・。実は僕はプログラム弱いんです・・・。移したいメールの数量がしれてるので、人力で対応!と思いましたが、それもあんまりなんで、明日、フィルター版考えてみます・・・。
手を加えたところですが、ベタベタですいません。
$head = preg_replace_callback(‘/=\?([^?]+)\?([BQ])\?([^?]+)\?=/’,’qbdecode’,$head);
$head = ereg_replace(‘quoted-printable’,’ 8bit’,$head);
$head = ereg_replace(‘Content-Type:text/plain;charset=\”shift-jis\”‘,’Content-Type: text/plain; charset=Shift_JIS’,$head);
$body = quoted_printable_decode($body);
(略)
header(‘Content-type: text/plain; charset=Shift_JIS’);
//print vmg header
print(“BEGIN:VMSG\nVERSION:1.1\nX-IRMC-STATUS:READ\nX-IRMC-TYPE:INET\nX-IRMC-BOX:INBOX\nX-CASIO-MAILSTATE:1074266114\nBEGIN:VBODY”);
//main text
print $data;
//vmg footer
print(“END:VBODY\nEND:VMSG”);
で、出来たファイルをリネームして、ファイル名を順番につけてminiSDの上述の該当個所に保存すれば無事、au携帯でドコモで受信した過去メールを読めるようになりました。
実は、今日は実験で終わってしまい、全メールの移行が終わってませんので、明日にでも、フィルタ的なスクリプトに書き換えようと思います。
なお、当然のことながら、作業前にはminiSD、及び本体メモリの内容のバックアップを取ってから存分に作業するようにしましょう。
昨日もスクリプトいじりしてたのですが、どうも本文中に顔文字なんかがあると、quoted_printable_decodeがうまく動作しないような気がします。引き続きPHPと格闘中ですが、わずかな例外に自分用スクリプトを対応させるのって本末転倒な気がするので、あとは力ワザかもしれないなあ。
このブログで関連すると思われる他の投稿
- PREV
- 郵政民営化とは
- NEXT
- EOS kiss Digitalが週末特価!新品レンズ2本付88,000円