class IterableRails::Message
Attributes
mail[R]
Public Class Methods
new(mail)
click to toggle source
# File lib/iterable_rails/message.rb, line 7 def initialize(mail) @mail = mail end
Public Instance Methods
attachments()
click to toggle source
# File lib/iterable_rails/message.rb, line 11 def attachments mail.attachments.map do |attachment| { name: attachment.filename, mimeType: attachment.mime_type, content: Base64.encode64(attachment.body.decoded) } end end
data_fields()
click to toggle source
# File lib/iterable_rails/message.rb, line 21 def data_fields { bcc_address: bcc_address, from_email: from_email, from_name: from_name, html: html, subject: subject, text: text, } end
metadata()
click to toggle source
# File lib/iterable_rails/message.rb, line 32 def metadata get_value(:metadata) || {} end
to_email_address()
click to toggle source
# File lib/iterable_rails/message.rb, line 36 def to_email_address to.address end
Private Instance Methods
attachments?()
click to toggle source
# File lib/iterable_rails/message.rb, line 168 def attachments? mail.attachments.any? { |a| !a.inline? } end
bcc_address()
click to toggle source
# File lib/iterable_rails/message.rb, line 42 def bcc_address return_string_value(:bcc_address) end
from()
click to toggle source
# File lib/iterable_rails/message.rb, line 148 def from address = mail[:from].formatted Mail::Address.new(address.first) end
from_email()
click to toggle source
# File lib/iterable_rails/message.rb, line 46 def from_email from.address end
from_name()
click to toggle source
# File lib/iterable_rails/message.rb, line 50 def from_name from.display_name end
get_value(field)
click to toggle source
# File lib/iterable_rails/message.rb, line 158 def get_value(field) if mail[field].respond_to?(:unparsed_value) # `mail` gem > 2.7.0 mail[field].unparsed_value elsif mail[field].instance_variable_defined?('@unparsed_value') # `mail` gem = 2.7.0 mail[field].instance_variable_get('@unparsed_value') elsif mail[field].instance_variable_defined?('@value') # `mail` gem < 2.7.0 mail[field].instance_variable_get('@value') end end
html()
click to toggle source
# File lib/iterable_rails/message.rb, line 54 def html return mail.html_part.body.decoded if mail.html_part return_decoded_body('text/html') end
important()
click to toggle source
# File lib/iterable_rails/message.rb, line 67 def important mail[:important].to_s == 'true' end
inline_attachments?()
click to toggle source
# File lib/iterable_rails/message.rb, line 172 def inline_attachments? mail.attachments.any?(&:inline?) end
inline_css()
click to toggle source
# File lib/iterable_rails/message.rb, line 71 def inline_css nil_true_false?(:inline_css) end
ip_pool()
click to toggle source
# File lib/iterable_rails/message.rb, line 75 def ip_pool return_string_value(:ip_pool) end
nil_true_false?(field)
click to toggle source
# File lib/iterable_rails/message.rb, line 184 def nil_true_false?(field) return nil if mail[field].nil? mail[field].to_s == 'true' end
preserve_recipients()
click to toggle source
# File lib/iterable_rails/message.rb, line 79 def preserve_recipients nil_true_false?(:preserve_recipients) end
return_decoded_body(mime_type)
click to toggle source
# File lib/iterable_rails/message.rb, line 176 def return_decoded_body(mime_type) mail.mime_type == mime_type ? mail.body.decoded : nil end
return_path_domain()
click to toggle source
# File lib/iterable_rails/message.rb, line 83 def return_path_domain return_string_value(:return_path_domain) end
return_string_value(field)
click to toggle source
# File lib/iterable_rails/message.rb, line 180 def return_string_value(field) mail[field] ? mail[field].to_s : nil end
send_at()
click to toggle source
# File lib/iterable_rails/message.rb, line 87 def send_at value = get_value(:send_at) value ? send_at_formatted_string(value) : nil end
send_at_formatted_string(obj)
click to toggle source
mandrill expects `send_at` in UTC as `YYYY-MM-DD HH:MM:SS`
# File lib/iterable_rails/message.rb, line 93 def send_at_formatted_string(obj) return obj if obj.is_a?(String) obj = obj.to_time if obj.is_a?(DateTime) return obj.utc.strftime('%Y-%m-%d %H:%M:%S') if obj.is_a?(Time) raise ArgumentError, 'send_at should be Time/DateTime or String' end
signing_domain()
click to toggle source
# File lib/iterable_rails/message.rb, line 102 def signing_domain return_string_value(:signing_domain) end
subaccount()
click to toggle source
# File lib/iterable_rails/message.rb, line 106 def subaccount return_string_value(:subaccount) end
subject()
click to toggle source
# File lib/iterable_rails/message.rb, line 110 def subject mail.subject end
template()
click to toggle source
# File lib/iterable_rails/message.rb, line 59 def template return_string_value(:template) end
template_content()
click to toggle source
# File lib/iterable_rails/message.rb, line 63 def template_content get_value(:template_content) end
text()
click to toggle source
# File lib/iterable_rails/message.rb, line 118 def text return mail.text_part.body.decoded if mail.text_part return_decoded_body('text/plain') end
to()
click to toggle source
# File lib/iterable_rails/message.rb, line 153 def to address = mail[:to].formatted Mail::Address.new(address.first) end
track_clicks()
click to toggle source
# File lib/iterable_rails/message.rb, line 123 def track_clicks nil_true_false?(:track_clicks) end
track_opens()
click to toggle source
# File lib/iterable_rails/message.rb, line 127 def track_opens nil_true_false?(:track_opens) end
tracking_domain()
click to toggle source
# File lib/iterable_rails/message.rb, line 131 def tracking_domain return_string_value(:tracking_domain) end
url_strip_qs()
click to toggle source
# File lib/iterable_rails/message.rb, line 135 def url_strip_qs nil_true_false?(:url_strip_qs) end
view_content_link()
click to toggle source
# File lib/iterable_rails/message.rb, line 139 def view_content_link nil_true_false?(:view_content_link) end