いろいろ
Seize the day.
2005-11-28 [長年日記]
■ [comp] OE の MIME メールデコードの謎の続き
前回のエントリ [2005-11-27] の続きです.えー,またまた,大変申し訳ありません.前回のエントリで思わず脊髄反射で「OE が悪いんじゃね?」とか書いてしまいましたが(激ぉ,OE は悪くありませんでした(ぉ.重ね重ね大変失礼しました.orz
しかし POP で取って来た場合になぜ大丈夫なのかはこれでは説明がつかない,とされている.
…いや,説明つくんじゃないかな.Mew が改行を LF にしてファイル保存しているからじゃない?
Mew の保存ファイルはあくまで Mew のファイル形式であって,それが RFC822/RFC2045 準拠だとは誰も言ってないから,改行が CRLF じゃないからと言って非難できない (なんかいろいろ議論があって Mew では改行は LF に統一することになったらしい)あああー,そうか,そうですね.そうでした orz.Mew が LF にしちゃってるのか.UNIX だもんな.完全にぼけてました.OE もまさか LF なメールを読まされるとは思ってなかったわけだから,非難はできませんね.OE よ,悪かった.許してくれ.
sleep 3ちなみに SoW 連係用スクリプト oe.pl では,このダサダサな手法を使ってました.しかも当初 [041207] はまさに 3 秒にしてましたが,どうも不安定なので,経験上 7 秒くらいにしています [051008].
とでも書いときましょか.うわあ,だせえ.
ついでに oe.pl 自体にも,CR 付加機能を実装しときました (こちら).これで SoW 経由の場合も正しく Excel ファイルが開けるはずです.
つーわけで多分これが本当のまとめ.…うへえ,さすがにもうこれで打ち止めでいいよな.
- 送付時,Mozilla/5.0 は添付データと boundary の間に空行を入れない.つまり添付データと boundary の間には CRLF があるのみ.
- 受信時,Mew は各行に対し CRLF→LF にしてメールを保存する (つまりファイル保存形式自体は RFC 準拠ではない).
- これを OE に渡すと,MIME 解析ルーチンが boundary 直前の 2 バイトを CRLF だと思い込んで添付データを切り出す.この結果,添付データの最後の 1 バイトが切り落とされ,base64 的にデータサイズ不整合となる.
- OE の base64 デコーダは,データサイズ不整合の場合,整合するようにデータを切り上げてデコードするので,結果としてデコードされた添付ファイルの末尾 3 バイトが消える.
- Excel の場合,末尾 3 バイトが消えると開けなくなることが多い.
- 解決策としては,Mew が取り除いた CR を補ってから OE に渡すのがよい.
- The MIME standard [MIME2] requires that e-mailed documents of "Content-Type: Text/ MUST be in canonical form before a Content- Transfer-Encoding is applied, i.e. that line breaks are encoded as CRLFs, not as bare CRs or bare LFs or something else. This is in contrast to [HTTP] where section 3.6.1 allows other representations of line breaks.eml ファイルの拡張子を mht にすると IE で開ける.でも添付ファイルは見えなくなるみたいだ.
[ ツッコミ | permalink | trackback ]
[TrackBack URL: http://nao.s164.xrea.com/td/tb.rb/20051128]
[(注) スパム対策のため,言及リンクのないトラックバックは受け付けていません.]
[(注) スパム対策のため,言及リンクのないトラックバックは受け付けていません.]
本日のリンク元
検索
- キーワード不明 ×4 / RFC 2557 ×3 / mht デコード ×3 / デコード 準拠 添付 ×3 / RFC2557 MHTML ×2 / MIME準拠 デコード ×2 / base64 decode size excel ×2 / mew 添付ファイル OE ×2 / mime eml RFC ×2 / eml デコード ×2 / .eml デコード ×2 / MIME デコーダ ×2 / mhtml mew ×2 / boundary メール lf ×1 / MIME デコード 改行 ×1 / MIME デコード ファイル 保存 ×1 / mime base64 デコード ×1 / mime デコード Base64 ×1 / Excel MIME 改行 ×1 / MIME デコーダ PHP ×1 / emlデコーダ ×1 / OE デコード ×1 / emlファイル MIMEデコード ×1 / Boundary mimeデコード ×1 / boundary mht ×1 / OutlookExpress 添付ファイル 改行 拡張子 ×1 / mht メール base64 ×1 / base64 デコード 35バイト ×1 / outlookExpress 添付ファイル デコード ×1 / emlファイル 添付ファイル デコード ×1 / mht mailto機能 ダブルバイト ×1 / pdf 添付 デコード ×1 / eml base64 デコード ×1 / rfc 2557 ×1 / mew 添付ファイル 保存 ×1 / メール bare LF ×1 / mht EXCEL IE ×1 / OE RFC準拠 ×1 / ruby メール デコード ×1 / eml 添付ファイル スクリプト base64 ×1 / RFC2557 日本語 ×1 / デコード スパム対策 ×1 / MHT デコード ×1 / mht デコーダ ×1 / RFC MIMEメール ×1 / emlファイル PHP デコード ×1 / mew eml 保存 ×1 / OutlookExpress 添付ファイル 改行 ×1 / rfc822 デコード ×1 / OE LF ×1 / 添付ファイル デコード ×1 / unix ファイル デコーダ ×1 / EML デコード ×1 / メール デコード UNIX ×1 / メール pdf 添付 デコード ×1 / OE EML MIME準拠 ×1 / メール デコード 添付 ×1 / pukiwiki emlファイル ×1 / rfc2557 デコード ×1 / Mime 解析 ×1 / エクセル デコード 添付 ×1 / OutlookExpress 添付ファイル 末尾 改行 消える ×1 / 添付ファイル php メール デコード ×1 / eml 添付ファイル 拡張子 保存 ×1 / EXCEL mew 添付 改行 ×1 / PHP メール デコード ×1
以下の広告はサーバによって自動的に挿入されています.
Copyright © 2004-2006, nao. All rights reserved.





