2012-01-08 54 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" 
} 
相關問題