### Home Classes Methods

### In Files

- lib/vmail/contacts_extractor.rb

### Parent

Object

### Methods

- ::new
- #extract
- #open
- #set_mailbox_prefix

### Class/Module Index

Quicksearch

- Vmail
- Vmail::AddressQuoter
- Vmail::ContactsExtractor
- Vmail::ImapClient
- Vmail::MessageFormatter
- Vmail::Options
- Vmail::Query
- Vmail::ReplyTemplate
- Vmail::SendOptions
- Vmail::Sender
- String

No matching classes.

# Vmail::ContactsExtractor

### Public Class Methods

new(username, password) click to toggle source

    # File lib/vmail/contacts_extractor.rb, line 5
    def initialize(username, password)
      puts "Logging as #{username}"
      @username, @password = username, password
    end

### Public Instance Methods

extract(limit = 500) click to toggle source

    # File lib/vmail/contacts_extractor.rb, line 18
    def extract(limit = 500)
      open do |imap|
        set_mailbox_prefix
        mailbox = "[#@prefix]/Sent Mail"
        STDERR.puts "Selecting #{mailbox}"
        imap.select(mailbox)
        STDERR.puts "Fetching last #{limit} sent messages"
        all_uids = imap.uid_search('ALL')
        STDERR.puts "Total messages: #{all_uids.size}"
        limit = [limit, all_uids.size].min
        STDERR.puts "Extracting addresses from #{limit} of them"
        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
              name = Mail::Encodings.unquote_and_convert_to(name, 'UTF-8')
              yield %Q("#{name}" <#{email}>)
            else
              yield email
            end
          end
        end
      end
    end

open() click to toggle source

    # File lib/vmail/contacts_extractor.rb, line 10
    def open
      @imap = Net::IMAP.new('imap.gmail.com', 993, true, nil, false)
      puts @imap.login(@username, @password)
      yield @imap
      @imap.close
      @imap.disconnect
    end

set_mailbox_prefix() click to toggle source

    # File lib/vmail/contacts_extractor.rb, line 47
    def set_mailbox_prefix
      mailboxes = ((@imap.list("[#@prefix]/", "%") || []) + (@imap.list("", "*")) || []).map {|struct| struct.name}
      @prefix = mailboxes.detect {|m| m =~ /^\[Google Mail\]/}  ?  "Google Mail" : "Gmail"
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.