三並です。 > > もともとの理由は、POP上でIMAPのように、 > > uidを指定して、特定のメール情報だけを読み出したかったので、 > > POP3#list_midが欲しくなりました。 > > つまり、限定 RETR が目的なんですね。了解しました。 はい。その通りです。 > それならば、次のような感じに書けるほうがカッコいいと思うの > ですがどうでしょう。 > > def need_download?( id ) > .... > end > > pop.mails.find_all {|mail| need_download?(mail.uidl) }.each do |mail| > mail_text = mail.pop > # いろいろする > end > > 今でもこのコードは動くんですが、現在の実装だと UIDL コマンドの > 無駄が多すぎるので使いづらいと思います。しかし UIDL が高々一回 > しか発行されないことが保証されれば気兼ねなく使えるはずです。 まさにその通りです。 一回似たようなことをやってみたら、とんでもなく重くて、 UIDLを引数無しで呼び出すことができればと思っていました。 ここまでnet/pop.rb側で処理してくれると至れり尽くせりですね。 ただ、net/pop.rbでいろいろとやってくれるのはいいのですが、 セッション内でどんなコマンドを発行したかを、 なんらかの手段で取得できるとうれしいですね。 #今まで、直接NICに流れるデータを見て確認していたので。 > 元の話に戻って POP3#list_mid ですが、この改造が終われば > > pop.mails.map {|m| m.uidl } > > で済むことなので、今回はとりあえず見送ります。何か明らかに > 便利な使い道を教えてもらえたらそのときに追加しましょう。 はい。見送りでいいと思います。 では。