Class: MultiMail::Message::Postmark

Inherits:
Base
  • Object
show all
Defined in:
lib/multi_mail/postmark/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

#mailboxhashObject

Returns the value of attribute mailboxhash.



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

def mailboxhash
  @mailboxhash
end

#messageidObject

Returns the value of attribute messageid.



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

def messageid
  @messageid
end

#tagObject

Returns the value of attribute tag.



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

def tag
  @tag
end

Instance Method Details

#postmark_attachmentsArray<Hash>

Returns the message's attachments in Postmark format.

Returns:

  • (Array<Hash>)

    the attachments in Postmark format

See Also:



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

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_headersArray<Hash>

Returns the message headers in Postmark format.

Returns:

  • (Array<Hash>)

    the message headers in Postmark format



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

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



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

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