2002-12-10 103195

IMAP4サーバのバグ

ENVELOPEやBODYSTRUCTUREのレスポンスがおかしいのはまだ理解できますが、BODY.PEEK[]という一番簡単なコマンドのレスポンスがおかしいっていうのは勘弁してもらいたいです。リテラルで指定されたサイズが間違っているので、来るはずがないデータを待ちつづけてタイムアウトしてしまうんですよね。しかも、これ以上シンプルにしようがないので回避策もないですし。。。

IMAP4でのサブカウンタ

POP3ではダウンロード中に、そのメールの何バイト中何バイトダウンロードしたかが表示されますが、IMAP4ではされません。これは何でかというと、POP3の場合一つのコマンドを送ると一つのレスポンスが返って来るというパターンなのにたいして、IMAP4ではそういう仕組みになっていないからなのです。つまり実際にパースしてみないと、そのレスポンスに要求したメールが入っているかどうかわからないので出せないんですよね。

でも、それだと進んでいるかどうかもわからないので、新しい方では1KB以上の長いリテラルが来たらそこで表示するようにしました。それが本当に目的のメールのバイト数かどうかはわかりませんが、その確立は高いですし、とりあえずダウンロードが進んでいることがわかれば十分かなということで。