[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
- Newer : ウィルコムのナノセル基地局
- Older : Google Chrome OS (仮) を開発すると発表した話
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
MS Outlook シリーズでリッチテキスト形式でメールをしたりするとできる winmail.dat という添付ファイルがあります。2007 になったらどうも抑制がうまくいかないとかいう話がありますがそれは今は関係ありません。Outlook 批判でもありません。
TNEF とか winmail.dat で検索するとオープンソースプロジェクトもあるし、Windows 用のツールがあったりします。
んで、そんな折に「Thunderbird を使っているんだけど winmail.dat なファイルを読み出すにはどうすればいいです?」という相談が寄せられた。社内から。Thunderbird は Add-on の開発が盛んなのでなんかあるだろうと思ったらありました。LookOut というものです。念のために動作確認もしましたが、日本語ファイル名は化けてしまうようです。
ろくに確認もせずに、文字化けの解決を模索してみました。lookout.jar の tnef.js を無理な編集してやれば大丈夫です。根本的な解決は開発陣にまかせるとして
file.name = tnef_file_munge_fname( attrs[i].values[0], files );
の直後に
var UConv = Components .classes['@mozilla.org/intl/scriptableunicodeconverter'] .getService(Components.interfaces.nsIScriptableUnicodeConverter); UConv.charset = "Shift_JIS"; file.name = UConv.ConvertToUnicode(file.name);
としてやると日本語のファイル名は戻ります。内部は Unicode なんですね。
無理な編集ですし、根本的な解決は開発陣にまかせるとして、ついでに TNEF (Transport Neutral Encapsulation Format) の詳しい仕様も調べる気もありません。仕様は別にして、MS が API 仕様を公開しています。ITnef : IUnknown とか OpenTnefStream とかがあるみたいです。COM で叩けばいけるんだと思いますが TNEF 自体の仕様ではないので参考までに。TnefReader Classなんてのも Windows Server 2003, Windows Server 2008 用としてあるぽいです (.NET ですかね)。MessageCodepage という property があるので、ファイル名もこのコードページにしたがえばいいんでしょうかね。自前でデコードしてもどこかにあるはずですわ。
ここまでやっておいてなんですが、Thunderbird は使っていないのでこのあたりで。
注意:上記コード片は MPL 1.1/GPL 2.0/LGPL 2.1 にしたがった物としないとまずいと思うのでそう扱ってください。
2009/07/11 Note Trackback() Comment(0)
COMMENT
COMMENT FORM
TRACKBACK