あおきです。
報告と提案、ありがとうございます。

  In Mail "[ruby-list:12083] [Q] POPclient"
    Shugo Maeda <shugo / netlab.co.jp> wrote:

> 前田です。

(略)
> のように@dele(@deletedではなく)がfalseの時、つまりPOPmailitem#deleteを
> 呼んでいない時にもdeleするようになっているみたいです。
> # 実際に試してないので勘違いかも。
> これはまずいのではないでしょうか?

すみません、バグです。
消さないことがないもので気づきませんでした。


> あと、すぐにdeleteしたい時のために、
> 
>     def delete(exec = false)
>       @dele = true
>       self.exec if exec
>     end
> 
> のようになっているとうれしいです。

delete!ですぐ消すようにしました。ついでに、消したあとのundelで
例外を発生するようにしました(undel!では例外発生なし)。

ドキュメントはパッチが大きかったので次のバージョンにいれます。
-------------------------------------------------------------------
あおきみねろう@一橋大学

[74,117,115,116,32,97,110,111,116,104,101,114,32,82,117,98,121,32,
 104,97,99,107,101,114,44,10].each do |i| print i.chr end


--- popclient.rb.org Sat Jan 30 14:12:01 1999 +++ popclient.rb Tue Feb 16 02:20:56 1999 @@ -16,6 +16,7 @@ class POP3Error < INETclientError ; end class NoAccount < POP3Error ; end class NoPassword < POP3Error ; end +class DeletedError < POP3Error ; end class APOPerror < POP3Error ; end class APOPtimeStampNotExist < APOPerror ; end @@ -157,15 +158,26 @@ end def delete ; @dele = true ; end - def undel ; @dele = false ; end - def delete? ; @dele ; end - def exec - unless @deleted then @socket.dele( @num ) end - @deleted = true + def delete! ; delete ; self.do_proc ; end + + def undel + if @deleted then + raise DeletedError, "can't undel deleted mail" + end + undel! end + def undel! ; @dele = false ; end + + def delete? ; @deleted or @dele ; end + def deleted? ; @deleted ; end + + def exec + if @dele and not @deleted then @socket.dele( @num ) end + @deleted = true + end # private method -----------------