というわけで [2005-11-22-1] 続き. どうも末尾 1 文字が落ちているっぽいという調査結果が報告されている.
しかし POP で取って来た場合になぜ大丈夫なのかはこれでは説明がつかな い,とされている.
…いや,説明つくんじゃないかな.Mew が改行を LF にしてファイル保存し ているからじゃない? というわけで改行を CRLF に変えてから開いてみると, 無事開いた.
つまり,
というわけで,誰も悪くないみたい.強いて言うなら Mew のファイルを無 理に eml だとして読み込んでいる私が悪いですかそうですか.
# ていうか eml 形式ってどこかにちゃんと定義されてるのかな
さてどうするか.あまり美しくないけど LF → CRLF 変換したテンポラリファ イルをかますしかないかな気味.
#!/bin/sh
tmpf=$1.$$.eml
cleantmp () {
/bin/rm -f /tmp/$tmpf
exit
}
/usr/bin/sed 's/$/^M/' /cygdrive/v/Mail/inbox/$1 > /tmp/$tmpf
/cygdrive/c/Program\ Files/Outlook\ Express/MSIMN.EXE "/eml:C:\\cygwin\\tmp\\$tmpf"
cleantmp
さあ何かつっこみどころ満載のスクリプトが来ましたよ.
まずえーと,^M って書いてるところは CR (0x0d) なので注意.
次に,cygwin だからなのか何なのかわかりませんが,シグナルを trap し ようとして「trap cleantmp INT」とか書くと,「trap: bad signal INT」 とか言われちゃうので,シグナル処理はさっくり無視してます.何かの拍子 にテンポラリファイルが残っちゃうかも知れないので注意.
あとですね,基本的動作としては,MSIMN.EXE (Outlook Express) を起動し ている行でそのまま MSIMN.EXE の終了まで待って,その後 cleantmp を呼 んでテンポラリファイルを消す,というつもりなのですが,既に MSIMN.EXE が動いている状態でこれを呼ぶとこの行では止まらないので,cleantmp が 即時呼ばれます.そのためタイミングの関係でごく稀にファイルを開き損ね ます.これが気になる人は,どうしましょうね.cleantmp の前に
sleep 3
とでも書いときましょか.うわあ,だせえ.
最終更新時間: 2007-08-20 03:32