This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
Reading Mail with IMAP (written by John Wells) | ||
---|---|---|
Code | Expected | Actual |
require 'net/imap' conn = Net::IMAP.new('mail.myhost.com', 143) conn.login('username', 'password') conn.search(['FROM', 'jabba@huttfoundation.org']).each do |sequence| fetch_result = conn.fetch(sequence, 'ENVELOPE') envelope = fetch_result[0].attr['ENVELOPE'] printf("%s - From: %s - To: %s - Subject: %s\n", envelope.date, envelope.from[0].name, envelope.to[0].name, envelope.subject) end |
Wed Feb 08 14:07:21 EST 2006 - From: The Hutt Foundation - To: You - Subject: Bwah! Wed Feb 08 11:21:19 EST 2006 - From: The Hutt Foundation - To: You - Subject: Go to do wa IMAP |
Error! (Exception?) Here's stdout: Net::IMAP::NoResponseError: incorrect password or account name from /usr/lib/ruby/1.8/net/imap.rb:971:in `get_tagged_response' from /usr/lib/ruby/1.8/net/imap.rb:1022:in `send_command' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/imap.rb:1007:in `send_command' from /usr/lib/ruby/1.8/net/imap.rb:374:in `login' from (irb):3 Net::IMAP::BadResponseError: no mailbox selected from /usr/lib/ruby/1.8/net/imap.rb:973:in `get_tagged_response' from /usr/lib/ruby/1.8/net/imap.rb:1022:in `send_command' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/imap.rb:1007:in `send_command' from /usr/lib/ruby/1.8/net/imap.rb:1140:in `search_internal' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/imap.rb:1136:in `search_internal' from /usr/lib/ruby/1.8/net/imap.rb:675:in `search' from (irb):4 |
puts "#{conn.responses["RECENT"]} new messages, #{conn.responses["EXISTS"]} total" |
10 new messages, 1022 total |
new messages, total |
uids = conn.search(["FROM", "jabba@huttfoundation.org"]).collect do |sequence| fetch_result = conn.fetch(sequence, "UID") puts "UID: #{fetch_result[0].attr["UID"]}" end |
UID: 203 UID: 206 |
Error! (Exception?) Here's stdout: Net::IMAP::BadResponseError: no mailbox selected from /usr/lib/ruby/1.8/net/imap.rb:973:in `get_tagged_response' from /usr/lib/ruby/1.8/net/imap.rb:1022:in `send_command' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/imap.rb:1007:in `send_command' from /usr/lib/ruby/1.8/net/imap.rb:1140:in `search_internal' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/imap.rb:1136:in `search_internal' from /usr/lib/ruby/1.8/net/imap.rb:675:in `search' from (irb):11 |
puts conn.uid_fetch(203, 'BODY[TEXT]')[0].attr['BODY[TEXT]'] class Net::IMAP def get_msg_info(msg_sequence_num) # code we used above fetch_result = fetch(msg_sequence_num, '(UID ENVELOPE)') envelope = fetch_result[0].attr['ENVELOPE'] uid = fetch_result[0].attr['UID'] info = {'UID' => uid, 'Date' => envelope.date, 'From' => envelope.from[0].name, 'To' => envelope.to[0].name, 'Subject' => envelope.subject} end end conn.search(['BEFORE', '01-Jan-2006', 'SINCE', '01-Jan-2000']).each do |sequence| conn.get_msg_info(sequence).each {|key, val| puts "#{key}: #{val}" } end |
... |
Net::IMAP::BadResponseError: no mailbox selected from /usr/lib/ruby/1.8/net/imap.rb:973:in `get_tagged_response' from /usr/lib/ruby/1.8/net/imap.rb:1022:in `send_command' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/imap.rb:1007:in `send_command' from /usr/lib/ruby/1.8/net/imap.rb:1152:in `fetch_internal' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/imap.rb:1150:in `fetch_internal' from /usr/lib/ruby/1.8/net/imap.rb:712:in `uid_fetch' from (irb):15 Net::IMAP::BadResponseError: no mailbox selected from /usr/lib/ruby/1.8/net/imap.rb:973:in `get_tagged_response' from /usr/lib/ruby/1.8/net/imap.rb:1022:in `send_command' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/imap.rb:1007:in `send_command' from /usr/lib/ruby/1.8/net/imap.rb:1140:in `search_internal' from /usr/lib/ruby/1.8/monitor.rb:229:in `synchronize' from /usr/lib/ruby/1.8/net/imap.rb:1136:in `search_internal' from /usr/lib/ruby/1.8/net/imap.rb:675:in `search' from (irb):29 |