class Mail::Part
Public Instance Methods
action()
click to toggle source
Either returns the action if the message has just a single report, or an array of all the actions, one for each report
# File lib/mail/part.rb, line 67 def action get_return_values('action') end
add_content_id(content_id_val = '')
click to toggle source
Creates a new empty Content-ID field and inserts it in the correct order into the Header. The ContentIdField object will automatically generate a unique content ID if you try and encode it or output it to_s without specifying a content id.
It will preserve the content ID you specify if you do.
# File lib/mail/part.rb, line 10 def add_content_id(content_id_val = '') header['content-id'] = content_id_val end
add_required_fields()
click to toggle source
Calls superclass method
Mail::Message#add_required_fields
# File lib/mail/part.rb, line 39 def add_required_fields super add_content_id if !has_content_id? && inline? end
add_required_message_fields()
click to toggle source
# File lib/mail/part.rb, line 44 def add_required_message_fields # Override so we don't add Date, MIME-Version, or Message-ID. end
bounced?()
click to toggle source
# File lib/mail/part.rb, line 56 def bounced? if action.is_a?(Array) !!(action.first =~ /failed/i) else !!(action =~ /failed/i) end end
cid()
click to toggle source
# File lib/mail/part.rb, line 26 def cid add_content_id unless has_content_id? uri_escape(unbracket(content_id)) end
delivery_status_data()
click to toggle source
# File lib/mail/part.rb, line 52 def delivery_status_data delivery_status_report_part? ? parse_delivery_status_report : {} end
delivery_status_report_part?()
click to toggle source
# File lib/mail/part.rb, line 48 def delivery_status_report_part? (main_type =~ /message/i && sub_type =~ /delivery-status/i) && body =~ /Status:/ end
diagnostic_code()
click to toggle source
# File lib/mail/part.rb, line 79 def diagnostic_code get_return_values('diagnostic-code') end
error_status()
click to toggle source
# File lib/mail/part.rb, line 75 def error_status get_return_values('status') end
final_recipient()
click to toggle source
# File lib/mail/part.rb, line 71 def final_recipient get_return_values('final-recipient') end
has_content_id?()
click to toggle source
Returns true if the part has a content ID field, the field may or may not have a value, but the field exists or not.
# File lib/mail/part.rb, line 16 def has_content_id? header.has_content_id? end
inline?()
click to toggle source
# File lib/mail/part.rb, line 35 def inline? header[:content_disposition].disposition_type == 'inline' if header[:content_disposition] end
inline_content_id()
click to toggle source
# File lib/mail/part.rb, line 20 def inline_content_id # TODO: Deprecated in 2.2.2 - Remove in 2.3 STDERR.puts("Part#inline_content_id is deprecated, please call Part#cid instead") cid end
remote_mta()
click to toggle source
# File lib/mail/part.rb, line 83 def remote_mta get_return_values('remote-mta') end
retryable?()
click to toggle source
# File lib/mail/part.rb, line 87 def retryable? !(error_status =~ /^5/) end
url()
click to toggle source
# File lib/mail/part.rb, line 31 def url "cid:#{cid}" end
Private Instance Methods
get_return_values(key)
click to toggle source
# File lib/mail/part.rb, line 93 def get_return_values(key) if delivery_status_data[key].is_a?(Array) delivery_status_data[key].map { |a| a.value } else delivery_status_data[key].value end end
parse_delivery_status_report()
click to toggle source
# File lib/mail/part.rb, line 113 def parse_delivery_status_report @delivery_status_data ||= Header.new(body.to_s.gsub("\r\n\r\n", "\r\n")) end
parse_message()
click to toggle source
A part may not have a header.… so, just init a body if no header
# File lib/mail/part.rb, line 102 def parse_message header_part, body_part = raw_source.split(/#{CRLF}#{WSP}*#{CRLF}/m, 2) if header_part =~ HEADER_LINE self.header = header_part self.body = body_part else self.header = "Content-Type: text/plain\r\n" self.body = raw_source end end