Class: MultiMail::Message::Mailgun

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

Overview

Instance Method Summary collapse

Instance Method Details

#mailgun_attachmentsMultimap

Returns the message's attachments in Mailgun format.

Returns:

  • (Multimap)

    the attachments in Mailgun format

See Also:



23
24
25
26
27
28
29
30
# File 'lib/multi_mail/mailgun/message.rb', line 23

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

#mailgun_headersMultimap

Returns the message headers in Mailgun format.

Returns:

  • (Multimap)

    the message headers in Mailgun format



8
9
10
11
12
13
14
15
16
17
# File 'lib/multi_mail/mailgun/message.rb', line 8

def mailgun_headers
  hash = Multimap.new
  header_fields.each do |field|
    key = field.name.downcase
    unless %w(from to cc bcc subject message-id).include?(key)
      hash["h:#{field.name}"] = field.value
    end
  end
  hash
end

#to_mailgun_hashHash

Returns the message as parameters to POST to Mailgun.

Returns:

  • (Hash)

    the message as parameters to POST to Mailgun



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/multi_mail/mailgun/message.rb', line 35

def to_mailgun_hash
  hash = Multimap.new

  %w(from subject).each do |field|
    if self[field]
      hash[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|
          hash[field] = value
        end
      else
        hash[field] = self[field].value
      end
    end
  end

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

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