BTS:285やBTS:287で書いたように、サーバによっては既に張ったセッションからはSELECTした以降のメッセージが見えないことがあるようです。
なので、セッション1でInboxをSELECTしてから、新着メールが到着し、それをセッション2で取り込んだ後で、本文をセッション1から取得しようとするとメッセージがないということになってしまいます。
SELECTしなおせば良いようですが、どのタイミングでSELECTしなおせばよいのかが思案のしどころです。最後のメッセージのUID同士を比較して異なっていればSELECTしなおすというのが一番確実ですが、何かする前に毎回最後のUIDを取得するのは無駄が多すぎるように感じます。メッセージ数が異なる場合にのみ最後のUIDを取得するというのもありですが、1通削除されて1通追加された場合などに問題が発生します。最後に同期した時間を覚えておいて、それ以前にSELECTしていたセッションはSELECTしなおすという方法もありますが、UW-IMAPのように既存のセッションにも新着メッセージを通知してくるサーバでは無駄になりそうです。
さてさて、どうするのが良いでしょう。
この問題,私にとってはかなり切実なのですが,セッション通しでフォルダ状態が共有出来ないのが問題なのかなぁって感じました. で,複数のセッションでフォルダ状態が変更されたって事を共有する方法ってないものでしょうか. 変更されているときだけ Select し直すって感じですが.. .folders 辺りにフラグ入れとくとか?
で,CW-IMAP 等のサーバはもったいないとすれば,そういう動作をするかどうかを .account の <imap> セクション辺りで定義するとか??
IMAPもマルチセッションもちゃんと理解してないで発言してるので,とんでもない事を言ってる気もしますが...
見当違いでオバカな発言してるならすみませんです...