Class: MultiMail::Message::Postmark

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

Overview

Instance Method Summary collapse

Constructor Details

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

Instance Method Details

#postmark_attachmentsMultimap

Returns the message's attachments in Postmark format.

Returns:

  • (Multimap)

    the attachments in Postmark format

See Also:



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/multi_mail/postmark/message.rb', line 25

def postmark_attachments
  attachments.map do |attachment|
    hash = {
      'ContentType' => attachment.content_type,
      'Name'        => attachment.filename,
      'Content'     => Base64.encode64(attachment.body.decoded)
    }
    if attachment.content_type.start_with?('image/')
      hash['ContentID'] = attachment.filename
    end
    hash
  end
end

#postmark_headersMultimap

Returns the message headers in Postmark format.

Returns:

  • (Multimap)

    the message headers in Postmark format



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

def postmark_headers
  array = []
  header_fields.each do |field|
    key = field.name.downcase
    # @see https://github.com/wildbit/postmark-gem/blob/master/lib/postmark/message_extensions/mail.rb#L74
    # @see https://github.com/wildbit/postmark-gem/pull/36#issuecomment-22298955
    unless %w(from to cc bcc reply-to subject tag content-type date).include?(key) || (Array === field.value && field.value.size > 1)
      array << {'Name' => field.name, 'Value' => field.value}
    end
  end
  array
end

#to_postmark_hashHash

Returns the message as parameters to POST to Postmark.

Returns:

  • (Hash)

    the message as parameters to POST to Postmark



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/multi_mail/postmark/message.rb', line 42

def to_postmark_hash
  hash = {}

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

  %w(to cc bcc reply_to).each do |field|
    if self[field]
      value = self[field].value
      hash[postmark_key(field)] = value.respond_to?(:join) ? value.join(', ') : value
    end
  end

  hash['TextBody']    = body_text
  hash['HtmlBody']    = body_html
  hash['Headers']     = postmark_headers
  hash['Attachments'] = postmark_attachments
  hash['Tag']         = tags.first

  normalize(hash)
end