エキサイトのアクセス解析を見ていると、私のブログを見てくださる方が、どんな検索キーワードで訪れてきていただいているのか分かる。
ごく最近書いた「ハンカチの木」など… その中で、もう3年以上も前に書いたBecky関連の記事を、毎月平均して数件もご覧頂いているのが分かる。 せっかく訪問いただいて、失望されていないといいのだけど。 3年前にはあいまいだったことで、最近理解できたことを少し書いてみる。 訪問いただいている方の、ご期待に沿うものであればいいのだか。 Beckyのメールを保存しているフォルダーは、左図のようになっている。 Beckyの画面左側のツリービューの受信箱= !!!!InBox など。 !!!Sent などのフォルダーには、Folder.idx Folder.ini xxx.bmf など3種類のファイルが保存されている。 3eb70643.bmf などの bmf ファイルには、メッセージビューに表示されるメール(本文+添付フィル+ヘッダ)が保存される。 Folder.idx には、リストビューに表示される「件名」・「差出人」などの情報が保存されると同時に、bmf ファイルへのひも付けがされている。 Folder.idx の内容は改行で区切られた可変長のレコード。 (最初の1件目はファイルId?、実際のデータは2件目以降) その中は例えば、1fb4.5.3eb70644.お元気?.差出人.宛先.<・・・>..3eb11b7a.3eb11b54.3eb19ca8.787.000001.0.3.0.iso-2022-jp. のようになっている。 「.」は各項目を区切るセパレータ。(1バイト、値は1) 各項目の意味は前から順に、右の表のようになっている。 ?が付いているのは、私には分からなかった項目。 もしかするとどこかに公開されているかもしれないが。 タイプ欄の数字項目は、数字を16進数の文字列にしたもの。 1fb4=8116、787=1927 などとなる。 数字をバイナリ値としないのは、セパレータ「.」と区別が付かなくなるから。 ? 差出人・宛先は名前+メールアドレスが保存される。 送信日時などは、1970年1月1日0時0分0秒を0としたUnix形式の日付。 C#などのDateTime型にするには10,000,000倍して、1970/1/1に加える必要がある。 (C#の日付は64ビット、Unixは32ビット。 32ビットなので、2038年には大騒ぎした2000年問題の再燃が起きるか?) 3eb11b7a=2003/5/1 13:4:58 となる。 優先度の3は通常、数字が小さいほど優先度が高い。 エンコード方式の iso-2022-jp はシフトJISのこと。 格納ファイル・アドレスについては容易に分かると思うが、左図のようになる。 3eb70643、3eb70644 などいくつかあるbmfファイルのアドレス以降にメールが保存されている。 ファイルサイズは短いメールでもヘッダが付加され、さらに添付ファイルがあるとかなり大きなものとなる。 VB6.0が画面表示にJISコード、ファイルへの入出力にシフトJISを用いていたのに対し、Visual C#では画面表示にUnicode、ファイル入出力にはUtf8を用いている。 BeckyのファイルもシフトJISで書かれているので、シフトJIS⇒Unicodeへの変換が必要となる。 ただし、ファイルストリームのエンコード方式にシフトJISを指定すれば、自動的に変換してくれる。 さらには、BASE64のエンコード・デコードもそれぞれメソッドが用意されている。 以前VB6.0では苦心して自分でデコードしたのに…。 もしかしてVB6.0にもツールが用意されていた? 【追記】 書き漏らしてしまったこと。 (そう重要ではないが) Folder.ini には、受信箱などのメールのトータル件数・未読件数、リストビューに表示する際のソート順、最後に保存したメールの「連番?」などを保存している。
by t_ichib
| 2009-05-02 12:04
| 今日もまた老年プログラマー
|
プロフィール
カテゴリ
以前の記事
その他のジャンル
記事ランキング
|
ファン申請 |
||