Class: Lettr::MailExtensions::Lettr

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

Instance Method Summary collapse

Constructor Details

#initialize(values = {}) ⇒ Lettr

Returns a new instance of Lettr.



5
6
7
# File 'lib/lettr/mail_extensions.rb', line 5

def initialize(values={})
  @settings = values
end

Instance Method Details

#deliver!(mail) ⇒ Object



9
10
11
12
13
14
15
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
42
43
# File 'lib/lettr/mail_extensions.rb', line 9

def deliver!(mail)
  lettr_request_hashes = []
  raise 'no recipient' unless mail.to
  raise 'no subject' unless mail.subject
  mail.to.each do |recipient|
    lettr_request_hash = {}
    lettr_request_hash[:recipient] = recipient
    lettr_request_hash[:subject] = mail.subject
    if mail.parts.empty?
      case mail.content_type
      when /text\/html/
        lettr_request_hash[:html] = mail.body
      when /text\/plain/
        lettr_request_hash[:text] = mail.body
      end
    else
      mail.parts.each do |part|
        case part.content_type
        when /text\/html/
          lettr_request_hash[:html] = part.body
        when /text\/plain/
          lettr_request_hash[:text] = part.body
        else
          lettr_request_hash[:attachments] ||= []
          lettr_request_hash[:attachments] << part.body
        end
      end
    end
    lettr_request_hashes << lettr_request_hash
  end
  identifier = @settings[:template] || mail.subject.downcase.gsub(/\s/, '_')
  lettr_request_hashes.each do |lettr_request_hash|
    ::Lettr.send(identifier, lettr_request_hash).deliver
  end
end