我是一個超級新手與Ruby,並玩弄IMAP庫。下面的程序似乎工作,但它永遠持續下去,直到所有消息加載。我如何將輸出限制爲X個消息,就像我只想顯示10個消息一樣?我想這是某種「如果信封=」 - 但不知道該放什麼。謝謝!如何限制使用條件與Ruby IMAP
require 'net/imap'
imap = Net::IMAP.new('mail.domain.com')
imap.authenticate('LOGIN', ' ', ' ')
imap.examine('INBOX')
imap.search(["SEEN"]).each do |message_id|
envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
puts "#{envelope.from[0].name}: \t#{envelope.subject}"
end
不知道是否適用於本案,或者我應該做一個新的問題,但使用「因爲」從下面的想法,我將如何顯示所有郵件(數組中的元素)獲取的計數?
imap.examine('INBOX')
imap.search(["SINCE", "17-Feb-2012"]).each do |message_id|
envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
puts "#{envelope.from[0].name}: \t#{envelope.subject}"
puts "#{envelope.count}"
end
上面在每行之後放置數字10,無論返回的電子郵件數量多少。我將如何a)只將結果放在列出的所有電子郵件的末尾,並b)找到數組中元素的真實數量?
OK,想通了第二部分:
require 'net/imap'
imap = Net::IMAP.new('mail.domain.com')
imap.authenticate('LOGIN', 'username', 'password')
imap.examine('INBOX')
mail_count = imap.search(["SINCE", "20-Feb-2012"])
puts mail_count.count
搜索只是返回一個數組,所以你總是可以只看前10個元素,而不是遍歷每個元素... – 2012-02-21 03:54:39