imap = Net::IMAP.new(server) imap.login(user, pass) all_mailboxes = imap.list("", "*") puts "Found " + all_mailboxes.length.to_s + " mailboxes" # loop through every mailbox all_mailboxes.each do |mailbox| mailbox_messages_by_size = Array.new puts "Examining " + mailbox.name imap.examine(mailbox.name) # fetch the messages imap_uids = Array.new imap_sids = imap.search(["ALL"]) puts "Found " + imap_sids.length.to_s + " messages in mailbox " + mailbox.name for sid in imap_sids msg = imap.fetch(sid, "BODY[TEXT]")[0] body = msg.attr["BODY[TEXT]"] ups = /(1Z ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3} ?[0-9A-Z]|[\dT]\d\d\d ?\d\d\d\d ?\d\d\d)/ #fedex = /^\d{12,19}$/ m = body.scan(ups) puts("-"*40) p m puts body m.each do |upsnum| print "Found UPS Tracking Number: " puts upsnum[0] print "test" end end end imap.logout imap.disconnect