Usage:

  class ApplicationMailer < ActionMailer::Base
    def post_notification(recipients, post)
      @recipients          = recipients
      @from                = post.author.email_address_with_name
      @headers["bcc"]      = SYSTEM_ADMINISTRATOR_EMAIL
      @headers["reply-to"] = "notifications@example.com"
      @subject             = "[#{post.account.name} #{post.title}]"
      @body["post"]        = post
    end

    def comment_notification(recipient, comment)
      @recipients      = recipient.email_address_with_name
      @subject         = "[#{comment.post.project.client.firm.account.name}]" +
                         " Re: #{comment.post.title}"
      @body["comment"] = comment
      @from            = comment.author.email_address_with_name
      @sent_on         = comment.posted_on
    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 <tt>@encoding</tt>.
    
  • encode_subject - Whether or not to encode the subject with the active charset. Defaults to true.
Methods
Attributes
[RW] bcc
[RW] body
[RW] cc
[RW] charset
[RW] encode_subject
[RW] from
[RW] headers
[RW] recipients
[RW] sent_on
[RW] subject
Public Class methods
new()
     # File vendor/rails/actionmailer/lib/action_mailer/base.rb, line 99
 99:     def initialize
100:       @bcc = @cc = @from = @recipients = @sent_on = @subject = @body = nil
101:       @charset = @@default_charset.dup
102:       @encode_subject = @@encode_subject
103:       @headers = {}
104:     end
receive(raw_email)
     # File vendor/rails/actionmailer/lib/action_mailer/base.rb, line 153
153:       def receive(raw_email)
154:         logger.info "Received mail:\n #{raw_email}" unless logger.nil?
155:         new.receive(TMail::Mail.parse(raw_email))
156:       end