[ruby-list:37640] Re: net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド

From: Minero Aoki <aamine@...>
Date: 2003-05-01 16:24:22 UTC
List: ruby-list #37640
青木です。

  In mail "[ruby-list:37637] Re: net/pop.rbにUIDLコマンドでMessage-Idのリストを取得するメソッド"
    "Keisuke Minami" <keisuke@rccn.com> wrote:

> 三並です。

> もともとの理由は、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 が高々一回
しか発行されないことが保証されれば気兼ねなく使えるはずです。


元の話に戻って POP3#list_mid ですが、この改造が終われば

  pop.mails.map {|m| m.uidl }

で済むことなので、今回はとりあえず見送ります。何か明らかに
便利な使い道を教えてもらえたらそのときに追加しましょう。

# あ、メール番号も入れるなら
#
#   pop.mails.map {|m| [m.num, m.uidl] }
#
# ですね。でも net/pop ではメール番号って基本的に使わないので
# 知ってもあまり意味がないんですよね。
-------------------------------------------------------------------
青木峰郎


In This Thread