Represents a subpart of an email message. It shares many similar attributes of ActionMailer::Base. Although you can create parts manually and add them to the parts list of the mailer, it is easier to use the helper methods in ActionMailer::PartContainer.
Methods
Included Modules
Class Public methods
Create a new part from the given params
hash. The valid params
keys correspond to the accessors.
Source: show
# File rails/actionmailer/lib/action_mailer/part.rb, line 43 def initialize(params) @content_type = params[:content_type] @content_disposition = params[:disposition] || "inline" @charset = params[:charset] @body = params[:body] @filename = params[:filename] @transfer_encoding = params[:transfer_encoding] || "quoted-printable" @headers = params[:headers] || {} @parts = [] end
Instance Public methods
Convert the part to a mail object which can be included in the parts list of another mail object.
Source: show
# File rails/actionmailer/lib/action_mailer/part.rb, line 56 def to_mail(defaults) part = TMail::Mail.new real_content_type, ctype_attrs = parse_content_type(defaults) if @parts.empty? part.content_transfer_encoding = transfer_encoding || "quoted-printable" case (transfer_encoding || "").downcase when "base64" then part.body = TMail::Base64.folding_encode(body) when "quoted-printable" part.body = [Utils.normalize_new_lines(body)].pack("M*") else part.body = body end # Always set the content_type after setting the body and or parts! # Also don't set filename and name when there is none (like in # non-attachment parts) if content_disposition == "attachment" ctype_attrs.delete "charset" part.set_content_type(real_content_type, nil, squish("name" => filename).merge(ctype_attrs)) part.set_content_disposition(content_disposition, squish("filename" => filename).merge(ctype_attrs)) else part.set_content_type(real_content_type, nil, ctype_attrs) part.set_content_disposition(content_disposition) end else if String === body part = TMail::Mail.new part.body = body part.set_content_type(real_content_type, nil, ctype_attrs) part.set_content_disposition "inline" m.parts << part end @parts.each do |p| prt = (TMail::Mail === p ? p : p.to_mail(defaults)) part.parts << prt end part.set_content_type(real_content_type, nil, ctype_attrs) if real_content_type =~ %rmultipart/ end headers.each { |k,v| part[k] = v } part end