module ActionMailer::MailHelper

Provides helper methods for ActionMailer::Base that can be used for easily formatting messages, accessing mailer or message instances, and the attachments list.

Public Instance Methods

attachments() click to toggle source

Access the message attachments list.

# File lib/action_mailer/mail_helper.rb, line 51
def attachments
  mailer.attachments
end
block_format(text) click to toggle source

Take the text and format it, indented two spaces for each line, and wrapped at 72 columns:

text = <<-TEXT
  This is
  the      paragraph.

  * item1 * item2
TEXT

block_format text
# => "  This is the paragraph.\n\n  * item1\n  * item2\n"
# File lib/action_mailer/mail_helper.rb, line 20
def block_format(text)
  formatted = text.split(/\n\r?\n/).collect { |paragraph|
    format_paragraph(paragraph)
  }.join("\n\n")

  # Make list points stand on their own line
  output = +""
  splits = formatted.split(/(\*+|\#+)/)
  while line = splits.shift
    if line.start_with?("*", "#") && splits.first&.start_with?(" ")
      output.chomp!(" ") while output.end_with?(" ")
      output << "  #{line} #{splits.shift.strip}\n"
    else
      output << line
    end
  end

  output
end
format_paragraph(text, len = 72, indent = 2) click to toggle source

Returns text wrapped at len columns and indented indent spaces. By default column length len equals 72 characters and indent indent equal two spaces.

my_text = 'Here is a sample text with more than 40 characters'

format_paragraph(my_text, 25, 4)
# => "    Here is a sample text with\n    more than 40 characters"
# File lib/action_mailer/mail_helper.rb, line 63
def format_paragraph(text, len = 72, indent = 2)
  sentences = [[]]

  text.split.each do |word|
    if sentences.first.present? && (sentences.last + [word]).join(" ").length > len
      sentences << [word]
    else
      sentences.last << word
    end
  end

  indentation = " " * indent
  sentences.map! { |sentence|
    "#{indentation}#{sentence.join(' ')}"
  }.join "\n"
end
mailer() click to toggle source

Access the mailer instance.

# File lib/action_mailer/mail_helper.rb, line 41
def mailer
  @_controller
end
message() click to toggle source

Access the message instance.

# File lib/action_mailer/mail_helper.rb, line 46
def message
  @_message
end