Class ActionMailer::Base
In: vendor/rails/actionmailer/lib/action_mailer/base.rb
Parent: Object

Usage:

  class ApplicationMailer < ActionMailer::Base
    # Set up properties
    # (Properties can also be specified via accessor methods
    # i.e. self.subject = "foo") and instance variables (@subject = "foo").
    def signup_notification(recipient)
      recipients recipient.email_address_with_name
      subject    "New account information"
      body       { "account" => recipient }
      from       "system@example.com"
    end

    # explicitly specify multipart messages
    def signup_notification(recipient)
      recipients      recipient.email_address_with_name
      subject         "New account information"
      from            "system@example.com"

      part :content_type => "text/html",
        :body => render_message("signup-as-html", :account => recipient)

      part "text/plain" do |p|
        p.body = render_message("signup-as-plain", :account => recipient)
        p.transfer_encoding = "base64"
      end
    end

    # attachments
    def signup_notification(recipient)
      recipients      recipient.email_address_with_name
      subject         "New account information"
      from            "system@example.com"

      attachment :content_type => "image/jpeg",
        :body => File.read("an-image.jpg")

      attachment "application/pdf" do |a|
        a.body = generate_your_pdf_here()
      end
    end

    # implicitly multipart messages
    def signup_notification(recipient)
      recipients      recipient.email_address_with_name
      subject         "New account information"
      from            "system@example.com"
      body(:account => "recipient")

      # ActionMailer will automatically detect and use multipart templates,
      # where each template is named after the name of the action, followed
      # by the content type. Each such detected template will be added as
      # a separate part to the message.
      #
      # for example, if the following templates existed:
      #   * signup_notification.text.plain.rhtml
      #   * signup_notification.text.html.rhtml
      #   * signup_notification.text.xml.rxml
      #   * signup_notification.text.x-yaml.rhtml
      #
      # Each would be rendered and added as a separate part to the message,
      # with the corresponding content type. The same body hash is passed to
      # each template.
    end
  end

  # After this post_notification will look for "templates/application_mailer/post_notification.rhtml"
  ApplicationMailer.template_root = "templates"

  ApplicationMailer.create_comment_notification(david, hello_world)  # => a tmail object
  ApplicationMailer.deliver_comment_notification(david, hello_world) # sends the email

Configuration options

These options are specified on the class level, like ActionMailer::Base.template_root = "/my/templates"

  • template_root - template root determines the base from which template references will be made.
  • logger - the logger is used for generating information on the mailing run if available. Can be set to nil for no logging. Compatible with both Ruby’s own Logger and Log4r loggers.
  • server_settings - Allows detailed configuration of the server:
    • :address Allows you to use a remote mail server. Just change it away from it’s default "localhost" setting.
    • :port On the off change that your mail server doesn’t run on port 25, you can change it.
    • :domain If you need to specify a HELO domain, you can do it here.
    • :user_name If your mail server requires authentication, set the username and password in these two settings.
    • :password If your mail server requires authentication, set the username and password in these two settings.
    • :authentication If your mail server requires authentication, you need to specify the authentication type here. This is a symbol and one of :plain, :login, :cram_md5
  • raise_delivery_errors - whether or not errors should be raised if the email fails to be delivered.
  • delivery_method - Defines a delivery method. Possible values are :smtp (default), :sendmail, and :test. Sendmail is assumed to be present at "/usr/sbin/sendmail".
  • perform_deliveries - Determines whether deliver_* methods are actually carried out. By default they are, but this can be turned off to help functional testing.
  • deliveries - Keeps an array of all the emails sent out through the Action Mailer with delivery_method :test. Most useful for unit and functional testing.
  • default_charset - The default charset used for the body and to encode the subject. Defaults to UTF-8. You can also pick a different charset from inside a method with @charset.
  • default_content_type - The default content type used for main part of the message. Defaults to "text/plain". You can also pick a different content type from inside a method with @content_type.
  • default_implicit_parts_order - When a message is built implicitly (i.e. multiple parts are assemble from templates which specify the content type in their filenames) this variable controls how the parts are ordered. Defaults to ["text/html", "text/enriched", "text/plain"]. Items that appear first in the array have higher priority in the mail client and appear last in the mime encoded message. You can also pick a different order from inside a method with @implicit_parts_order.

Included Modules

AdvAttrAccessor PartContainer

Attributes

mail  [R] 

[Validate]