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.



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

def initialize(message)
  @message = message
end

Instance Attribute Details

#messageObject

Returns the value of attribute message.



5
6
7
# File 'app/models/virtual_mails/email.rb', line 5

def message
  @message
end

Class Method Details

.allObject



43
44
45
46
47
48
# File 'app/models/virtual_mails/email.rb', line 43

def self.all
  emails = Rails.cache.fetch(CacheKey) do
    emails = []
  end
  emails
end

.clearObject



56
57
58
# File 'app/models/virtual_mails/email.rb', line 56

def self.clear
  Rails.cache.delete(CacheKey)
end

.find(id) ⇒ Object

Raises:

  • (ActiveRecord::RecordNotFound)


50
51
52
53
54
# File 'app/models/virtual_mails/email.rb', line 50

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

Instance Method Details

#bodyObject



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

def body
  html || plain
end

#body_tagObject



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

def body_tag
  html_tag || plain_tag
end

#fromObject



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

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

#idObject



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

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

#list_toObject



27
28
29
# File 'app/models/virtual_mails/email.rb', line 27

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

#rawObject



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

def raw
  @message.to_s
end

#toObject



20
21
22
23
24
25
# File 'app/models/virtual_mails/email.rb', line 20

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