Class: ContactsExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/contacts_extractor.rb

Instance Method Summary collapse

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

Yields:

  • (@imap)


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.(@username, @password)
  yield @imap
  @imap.close 
  @imap.disconnect
end