class MultiMail::Message::Postmark

@see developer.postmarkapp.com/developer-build.html#message-format

Attributes

mailboxhash[RW]
messageid[RW]
tag[RW]

Public Instance Methods

postmark_attachments() click to toggle source

Returns the message's attachments in Postmark format.

@return [Array<Hash>] the attachments in Postmark format @see developer.postmarkapp.com/developer-build.html#attachments

# 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_headers() click to toggle source

Returns the message headers in Postmark format.

@return [Array<Hash>] the message headers in Postmark format

# 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_hash() click to toggle source

Returns the message as parameters to POST to Postmark.

@return [Hash] the message as parameters to POST to Postmark

# 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

Private Instance Methods

postmark_key(string) click to toggle source
# File lib/multi_mail/postmark/message.rb, line 71
def postmark_key(string)
  string.downcase.split(/[_-]/).map(&:capitalize).join
end