Class: VirtualMails::Email

Inherits:
Object
  • Object
show all
Includes:
ActionView::Helpers::TagHelper
Defined in:
app/models/virtual_mails/email.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message) ⇒ Email

Returns a new instance of Email.



11
12
13
# File 'app/models/virtual_mails/email.rb', line 11

def initialize(message)
  @message = message
end

Instance Attribute Details

#messageObject

Returns the value of attribute message.



7
8
9
# File 'app/models/virtual_mails/email.rb', line 7

def message
  @message
end

Class Method Details

.allObject



46
47
48
49
50
# File 'app/models/virtual_mails/email.rb', line 46

def self.all
  VirtualMails::Mailer.cache.fetch(CACHE_KEY) do
    []
  end
end

.clearObject



59
60
61
# File 'app/models/virtual_mails/email.rb', line 59

def self.clear
  VirtualMails::Mailer.cache.delete(CACHE_KEY)
end

.find(id) ⇒ Object

Raises:

  • (ActiveRecord::RecordNotFound)


52
53
54
55
56
57
# File 'app/models/virtual_mails/email.rb', line 52

def self.find(id)
  mail = all.find { |m| m.id == id }
  raise ActiveRecord::RecordNotFound if mail.nil?

  mail
end

Instance Method Details

#bodyObject



34
35
36
# File 'app/models/virtual_mails/email.rb', line 34

def body
  html || plain
end

#body_tagObject



38
39
40
# File 'app/models/virtual_mails/email.rb', line 38

def body_tag
  html_tag || plain_tag
end

#fromObject



19
20
21
# File 'app/models/virtual_mails/email.rb', line 19

def from
  @message.header.fields.find { |f| f.name == 'From' }.value
end

#idObject



15
16
17
# File 'app/models/virtual_mails/email.rb', line 15

def id
  @message.message_id.split('@')[0]
end

#list_toObject



30
31
32
# File 'app/models/virtual_mails/email.rb', line 30

def list_to
  @message.header.fields.find { |f| f.name == 'To' }.value
end

#rawObject



42
43
44
# File 'app/models/virtual_mails/email.rb', line 42

def raw
  @message.to_s
end

#toObject



23
24
25
26
27
28
# File 'app/models/virtual_mails/email.rb', line 23

def to
  addresses = @message.header.fields.find { |f| f.name == 'To' }.address_list.addresses
  address = addresses[0].to_s
  count = addresses.length
  count > 1 ? address + ", ...#{count - 1} more" : address
end