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

From: Minero Aoki <aamine@...>
Date: 2003-05-02 05:22:47 UTC
List: ruby-list #37644
青木です。

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

> 三並です。

> > それならば、次のような感じに書けるほうがカッコいいと思うの
> > ですがどうでしょう。

> > 今でもこのコードは動くんですが、現在の実装だと UIDL コマンドの
> > 無駄が多すぎるので使いづらいと思います。しかし UIDL が高々一回
> > しか発行されないことが保証されれば気兼ねなく使えるはずです。
> 
> まさにその通りです。
> 一回似たようなことをやってみたら、とんでもなく重くて、
> UIDLを引数無しで呼び出すことができればと思っていました。
> 
> ここまでnet/pop.rb側で処理してくれると至れり尽くせりですね。

じゃあこの方針でいってみます。


> ただ、net/pop.rbでいろいろとやってくれるのはいいのですが、
> セッション内でどんなコマンドを発行したかを、
> なんらかの手段で取得できるとうれしいですね。
> #今まで、直接NICに流れるデータを見て確認していたので。

  pop = Net::POP.new(....)
  pop.set_debug_output $stderr
  pop.start {
      ....
  }

とすると stderr に次のように出力されます。

opening connection to localhost...
opened
-> "+OK harmony POP3 Server (Version 1.005l) ready at <Mon Apr 28 07:12:29 2003>\r\n"
<- "USER XXXXXXXX\r\n"
-> "+OK please send PASS command\r\n"
<- "PASS XXXXXXXX\r\n"
-> "+OK 7 messages ready for aamine in /usr/spool/mail/aamine\r\n"
<- "STAT\r\n"
-> "+OK 7 1577046\r\n"
<- "LIST\r\n"
-> "+OK 7 messages; msg\# and size (in octets) for undeleted messages:\r\n"
-> "1 104916\r\n"
-> "2 209364\r\n"
-> "3 313812\r\n"
-> "4 418260\r\n"
   中略
<- "QUIT\r\n"
-> "+OK harmony POP3 Server (Version 1.005l) shutdown.\r\n"
closed

Net::SMTP Net::HTTP も同様です。ただしパスワードもそのまま
流れてしまうので本当にデバッグ用にしか使えません。
-------------------------------------------------------------------
青木峰郎

In This Thread