| Class | ActionMailer::Base |
| In: |
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
These options are specified on the class level, like ActionMailer::Base.template_root = "/my/templates"
| [R] | The mail object instance referenced by this mailer. |
Deliver the given mail object directly. This can be used to deliver a preconstructed mail object, like:
email = MyMailer.create_some_mail(parameters) email.set_some_obscure_header "frobnicate" MyMailer.deliver(email)
Receives a raw email, parses it into an email object, decodes it, instantiates a new mailer, and passes the email object to the mailer object’s receive method. If you want your mailer to be able to process incoming messages, you’ll need to implement a receive method that accepts the email object as a parameter:
class MyMailer < ActionMailer::Base
def receive(mail)
...
end
end