Class: ContactsExtractor
- Inherits:
-
Object
- Object
- ContactsExtractor
- Defined in:
- lib/contacts_extractor.rb
Instance Method Summary collapse
- #extract! ⇒ Object
-
#initialize(config) ⇒ ContactsExtractor
constructor
A new instance of ContactsExtractor.
- #open {|@imap| ... } ⇒ Object
Constructor Details
#initialize(config) ⇒ ContactsExtractor
Returns a new instance of ContactsExtractor.
4 5 6 |
# File 'lib/contacts_extractor.rb', line 4 def initialize(config) @username, @password = config['login'], config['password'] end |
Instance Method Details
#extract! ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/contacts_extractor.rb', line 16 def extract! @contacts = [] open do |imap| mailbox = '[Gmail]/Sent Mail' STDERR.puts "selecting #{mailbox}" imap.select(mailbox) STDERR.puts "fetching last 500 sent messages" all_uids = imap.uid_search('ALL') limit = [500, all_uids.size].max uids = all_uids[-limit ,limit] imap.uid_fetch(uids, ["FLAGS", "ENVELOPE"]).each do |fetch_data| recipients = fetch_data.attr["ENVELOPE"].to next unless recipients recipients.each do |address_struct| email = [address_struct.mailbox, address_struct.host].join('@') name = address_struct.name if name puts "#{name} <#{email}>" else puts email end end end end @contacts end |
#open {|@imap| ... } ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/contacts_extractor.rb', line 8 def open @imap = Net::IMAP.new('imap.gmail.com', 993, true, nil, false) @imap.login(@username, @password) yield @imap @imap.close @imap.disconnect end |