Class: Mail::AddressList

Inherits:
Object show all
Defined in:
lib/mail/elements/address_list.rb

Overview

:nodoc:

Instance Method Summary (collapse)

Constructor Details

- (AddressList) initialize(string)

Mail::AddressList is the class that parses To, From and other address fields from emails passed into Mail.

AddressList provides a way to query the groups and mailbox lists of the passed in string.

It can supply all addresses in an array, or return each address as an address object.

Mail::AddressList requires a correctly formatted group or mailbox list per RFC2822 or RFC822. It also handles all obsolete versions in those RFCs.

list = 'ada@test.lindsaar.net, My Group: mikel@test.lindsaar.net, Bob <bob@test.lindsaar.net>;'
a = AddressList.new(list)
a.addresses    #=> [#<Mail::Address:14943130 Address: |ada@test.lindsaar.net...
a.group_names  #=> ["My Group"]


20
21
22
23
# File 'lib/mail/elements/address_list.rb', line 20

def initialize(string)
  @addresses_grouped_by_group = nil
  @address_list = Parsers::AddressListsParser.new.parse(string)
end

Instance Method Details

- (Object) addresses

Returns a list of address objects from the parsed line



26
27
28
29
30
# File 'lib/mail/elements/address_list.rb', line 26

def addresses
  @addresses ||= @address_list.addresses.map do |address_data|
    Mail::Address.new(address_data)
  end
end

- (Object) addresses_grouped_by_group



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/mail/elements/address_list.rb', line 32

def addresses_grouped_by_group
  return @addresses_grouped_by_group if @addresses_grouped_by_group

  @addresses_grouped_by_group = {}

  @address_list.addresses.each do |address_data|
    if group = address_data.group
      @addresses_grouped_by_group[group] ||= []
      @addresses_grouped_by_group[group] << Mail::Address.new(address_data)
    end
  end
  @addresses_grouped_by_group
end

- (Object) group_names

Returns the names as an array of strings of all groups



47
48
49
# File 'lib/mail/elements/address_list.rb', line 47

def group_names # :nodoc:
  @address_list.group_names
end