2012-01-08 14 views
2

Ruby/Mikel Mail gemを使ってpop3にアクセスしたいのですが、サーバーからメールを選択的に削除する方法を見つけることができません。ここでは、提供されているrdocの仕様を誤解していることを例証するいくつかの機能しないサンプルコードを示します。ruby​​/mikelメールでサーバ上の特定のメールを削除するには?

require 'rubygems' 
require 'mail' 

Mail.defaults do 
    retriever_method :pop3, { :address => '...',       
        :user_name => '...', 
        :password => '...' }       
end 


puts "#{Mail.all.length} messages on server found." 
if Mail.all.length > 0 
    mm = Mail.first 
    puts mm.from 
    puts "I delete all but the first mail!" 

    mm.mark_for_delete = false 
    Mail.find_and_delete 

    puts "#{Mail.all.length} messages on server found." 
end 

この結果、サーバー上の2つのメールで、このスクリプトは両方を削除します。代わりに私はそれが最初のものを削除したいだけです。あなたは同じ問題を見ている場合

答えて

5

は、それをあなたのための答えを自分自身を発見..

は、明示的に単純に、メッセージの削除をスキップを決定するために、)(find_and_deleteでブロックをスローする必要が判明します:

Mail.find_and_delete({:what=>:first}) { |msg| 
    msg.skip_deletion if msg.subject == "test1826" 
}