Class: MultiMail::Message::Mailgun

Inherits:
Base
  • Object
show all
Defined in:
lib/multi_mail/mailgun/message.rb

Overview

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from MultiMail::Message::Base

Instance Attribute Details

#content_id_mapObject

Returns the value of attribute content_id_map.



5
6
7
# File 'lib/multi_mail/mailgun/message.rb', line 5

def content_id_map
  @content_id_map
end

#stripped_htmlObject

Returns the value of attribute stripped_html.



5
6
7
# File 'lib/multi_mail/mailgun/message.rb', line 5

def stripped_html
  @stripped_html
end

#stripped_signatureObject

Returns the value of attribute stripped_signature.



5
6
7
# File 'lib/multi_mail/mailgun/message.rb', line 5

def stripped_signature
  @stripped_signature
end

#stripped_textObject

Returns the value of attribute stripped_text.



5
6
7
# File 'lib/multi_mail/mailgun/message.rb', line 5

def stripped_text
  @stripped_text
end

Instance Method Details

#mailgun_attachmentsMultimap

Returns the message's attachments in Mailgun format.

Returns:

  • (Multimap)

    the attachments in Mailgun format

See Also:



32
33
34
35
36
37
38
39
# File 'lib/multi_mail/mailgun/message.rb', line 32

def mailgun_attachments
  map = Multimap.new
  attachments.each do |attachment|
    key = attachment.content_type.start_with?('image/') ? 'inline' : 'attachment'
    map[key] = Faraday::UploadIO.new(StringIO.new(attachment.body.decoded), attachment.content_type, attachment.filename)
  end
  map
end

#mailgun_headersHash

Returns the message headers in Mailgun format.

Returns:

  • (Hash)

    the message headers in Mailgun format



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/multi_mail/mailgun/message.rb', line 10

def mailgun_headers
  map = Multimap.new
  hash = Hash.new

  header_fields.each do |field|
    key = field.name.downcase
    unless %w(from to cc bcc subject tag).include?(key)
      if key == 'reply-to'
        hash["h:#{field.name}"] = field.value
      else
        map["h:#{field.name}"] = field.value
      end
    end
  end

  map.to_hash.merge(hash)
end

#to_mailgun_hashHash

Returns the message as parameters to POST to Mailgun.

Returns:

  • (Hash)

    the message as parameters to POST to Mailgun

See Also:



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/multi_mail/mailgun/message.rb', line 45

def to_mailgun_hash
  map = Multimap.new
  hash = Hash.new

  %w(from subject).each do |field|
    if self[field]
      map[field] = self[field].value
    end
  end

  %w(to cc bcc).each do |field|
    if self[field]
      if self[field].value.respond_to?(:each)
        self[field].value.each do |value|
          map[field] = value
        end
      else
        map[field] = self[field].value
      end
    end
  end

  if body_text && !body_text.empty?
    map['text'] = body_text
  end
  if body_html && !body_html.empty?
    map['html'] = body_html
  end

  tags.each do |tag|
    map['o:tag'] = tag
  end

  normalize(map.merge(mailgun_attachments).to_hash.merge(mailgun_headers).merge(hash))
end