Update docs to reflect changes to MailerGenerator.
This commit is contained in:
parent
cd902a0d1d
commit
ec49324bd7
|
@ -15,11 +15,17 @@ module ActionMailer
|
|||
#
|
||||
# $ rails generate mailer Notifier
|
||||
#
|
||||
# The generated model inherits from <tt>ActionMailer::Base</tt>. A mailer model defines methods
|
||||
# The generated model inherits from <tt>ApplicationMailer</tt> which in turn
|
||||
# inherits from <tt>ActionMailer::Base</tt>. A mailer model defines methods
|
||||
# used to generate an email message. In these methods, you can setup variables to be used in
|
||||
# the mailer views, options on the mail itself such as the <tt>:from</tt> address, and attachments.
|
||||
#
|
||||
# class Notifier < ActionMailer::Base
|
||||
# class ApplicationMailer < ActionMailer::Base
|
||||
# default from: 'from@exmaple.com'
|
||||
# layout 'mailer'
|
||||
# end
|
||||
#
|
||||
# class Notifier < ApplicationMailer
|
||||
# default from: 'no-reply@example.com',
|
||||
# return_path: 'system@example.com'
|
||||
#
|
||||
|
@ -84,7 +90,7 @@ module ActionMailer
|
|||
# name as the method in your mailer model. For example, in the mailer defined above, the template at
|
||||
# <tt>app/views/notifier/welcome.text.erb</tt> would be used to generate the email.
|
||||
#
|
||||
# Variables defined in the methods of your mailer model are accessible as instance variables in their
|
||||
# Variables defined in the methods of your mailer model are accessible as instance variables in their
|
||||
# corresponding view.
|
||||
#
|
||||
# Emails by default are sent in plain text, so a sample view for our model example might look like this:
|
||||
|
@ -178,7 +184,7 @@ module ActionMailer
|
|||
#
|
||||
# Sending attachment in emails is easy:
|
||||
#
|
||||
# class ApplicationMailer < ActionMailer::Base
|
||||
# class Notifier < ApplicationMailer
|
||||
# def welcome(recipient)
|
||||
# attachments['free_book.pdf'] = File.read('path/to/file.pdf')
|
||||
# mail(to: recipient, subject: "New account information")
|
||||
|
@ -194,7 +200,7 @@ module ActionMailer
|
|||
# If you need to send attachments with no content, you need to create an empty view for it,
|
||||
# or add an empty body parameter like this:
|
||||
#
|
||||
# class ApplicationMailer < ActionMailer::Base
|
||||
# class Notifier < ApplicationMailer
|
||||
# def welcome(recipient)
|
||||
# attachments['free_book.pdf'] = File.read('path/to/file.pdf')
|
||||
# mail(to: recipient, subject: "New account information", body: "")
|
||||
|
@ -206,7 +212,7 @@ module ActionMailer
|
|||
# You can also specify that a file should be displayed inline with other HTML. This is useful
|
||||
# if you want to display a corporate logo or a photo.
|
||||
#
|
||||
# class ApplicationMailer < ActionMailer::Base
|
||||
# class Notifier < ApplicationMailer
|
||||
# def welcome(recipient)
|
||||
# attachments.inline['photo.png'] = File.read('path/to/photo.png')
|
||||
# mail(to: recipient, subject: "Here is what we look like")
|
||||
|
@ -245,7 +251,7 @@ module ActionMailer
|
|||
# Action Mailer provides some intelligent defaults for your emails, these are usually specified in a
|
||||
# default method inside the class definition:
|
||||
#
|
||||
# class Notifier < ActionMailer::Base
|
||||
# class Notifier < ApplicationMailer
|
||||
# default sender: 'system@example.com'
|
||||
# end
|
||||
#
|
||||
|
@ -263,7 +269,7 @@ module ActionMailer
|
|||
# As you can pass in any header, you need to either quote the header as a string, or pass it in as
|
||||
# an underscored symbol, so the following will work:
|
||||
#
|
||||
# class Notifier < ActionMailer::Base
|
||||
# class Notifier < ApplicationMailer
|
||||
# default 'Content-Transfer-Encoding' => '7bit',
|
||||
# content_description: 'This is a description'
|
||||
# end
|
||||
|
@ -271,7 +277,7 @@ module ActionMailer
|
|||
# Finally, Action Mailer also supports passing <tt>Proc</tt> objects into the default hash, so you
|
||||
# can define methods that evaluate as the message is being generated:
|
||||
#
|
||||
# class Notifier < ActionMailer::Base
|
||||
# class Notifier < ApplicationMailer
|
||||
# default 'X-Special-Header' => Proc.new { my_method }
|
||||
#
|
||||
# private
|
||||
|
@ -296,7 +302,7 @@ module ActionMailer
|
|||
# This may be useful, for example, when you want to add default inline attachments for all
|
||||
# messages sent out by a certain mailer class:
|
||||
#
|
||||
# class Notifier < ActionMailer::Base
|
||||
# class Notifier < ApplicationMailer
|
||||
# before_action :add_inline_attachment!
|
||||
#
|
||||
# def welcome
|
||||
|
@ -703,7 +709,7 @@ module ActionMailer
|
|||
# The main method that creates the message and renders the email templates. There are
|
||||
# two ways to call this method, with a block, or without a block.
|
||||
#
|
||||
# It accepts a headers hash. This hash allows you to specify
|
||||
# It accepts a headers hash. This hash allows you to specify
|
||||
# the most used headers in an email message, these are:
|
||||
#
|
||||
# * +:subject+ - The subject of the message, if this is omitted, Action Mailer will
|
||||
|
|
|
@ -35,10 +35,26 @@ views.
|
|||
```bash
|
||||
$ bin/rails generate mailer UserMailer
|
||||
create app/mailers/user_mailer.rb
|
||||
create app/mailers/application_mailer.rb
|
||||
invoke erb
|
||||
create app/views/user_mailer
|
||||
create app/views/layouts/mailer.text.erb
|
||||
create app/views/layouts/mailer.html.erb
|
||||
invoke test_unit
|
||||
create test/mailers/user_mailer_test.rb
|
||||
create test/mailers/previews/user_mailer_preview.rb
|
||||
```
|
||||
|
||||
```ruby
|
||||
# app/mailers/application_mailer.rb
|
||||
class ApplicationMailer < ActionMailer::Base
|
||||
default "from@example.com"
|
||||
layout 'mailer'
|
||||
end
|
||||
|
||||
# app/mailers/user_mailer.rb
|
||||
class UserMailer < ApplicationMailer
|
||||
end
|
||||
```
|
||||
|
||||
As you can see, you can generate mailers just like you use other generators with
|
||||
|
@ -63,8 +79,7 @@ delivered via email.
|
|||
`app/mailers/user_mailer.rb` contains an empty mailer:
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
default from: 'from@example.com'
|
||||
class UserMailer < ApplicationMailer
|
||||
end
|
||||
```
|
||||
|
||||
|
@ -72,7 +87,7 @@ Let's add a method called `welcome_email`, that will send an email to the user's
|
|||
registered email address:
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
class UserMailer < ApplicationMailer
|
||||
default from: 'notifications@example.com'
|
||||
|
||||
def welcome_email(user)
|
||||
|
@ -348,7 +363,7 @@ for the HTML version and `welcome_email.text.erb` for the plain text version.
|
|||
To change the default mailer view for your action you do something like:
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
class UserMailer < ApplicationMailer
|
||||
default from: 'notifications@example.com'
|
||||
|
||||
def welcome_email(user)
|
||||
|
@ -370,7 +385,7 @@ If you want more flexibility you can also pass a block and render specific
|
|||
templates or even render inline or text without using a template file:
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
class UserMailer < ApplicationMailer
|
||||
default from: 'notifications@example.com'
|
||||
|
||||
def welcome_email(user)
|
||||
|
@ -400,7 +415,7 @@ layout.
|
|||
In order to use a different file, call `layout` in your mailer:
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
class UserMailer < ApplicationMailer
|
||||
layout 'awesome' # use awesome.(html|text).erb as the layout
|
||||
end
|
||||
```
|
||||
|
@ -412,7 +427,7 @@ You can also pass in a `layout: 'layout_name'` option to the render call inside
|
|||
the format block to specify different layouts for different formats:
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
class UserMailer < ApplicationMailer
|
||||
def welcome_email(user)
|
||||
mail(to: user.email) do |format|
|
||||
format.html { render layout: 'my_layout' }
|
||||
|
@ -510,7 +525,7 @@ while delivering emails, you can do this using `delivery_method_options` in the
|
|||
mailer action.
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
class UserMailer < ApplicationMailer
|
||||
def welcome_email(user, company)
|
||||
@user = user
|
||||
@url = user_url(@user)
|
||||
|
@ -532,7 +547,7 @@ option. In such cases don't forget to add the `:content_type` option. Rails
|
|||
will default to `text/plain` otherwise.
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
class UserMailer < ApplicationMailer
|
||||
def welcome_email(user, email_body)
|
||||
mail(to: user.email,
|
||||
body: email_body,
|
||||
|
@ -562,7 +577,7 @@ mailer, and pass the email object to the mailer `receive` instance
|
|||
method. Here's an example:
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
class UserMailer < ApplicationMailer
|
||||
def receive(email)
|
||||
page = Page.find_by(address: email.to.first)
|
||||
page.emails.create(
|
||||
|
@ -598,7 +613,7 @@ Action Mailer allows for you to specify a `before_action`, `after_action` and
|
|||
using instance variables set in your mailer action.
|
||||
|
||||
```ruby
|
||||
class UserMailer < ActionMailer::Base
|
||||
class UserMailer < ApplicationMailer
|
||||
after_action :set_delivery_options,
|
||||
:prevent_delivery_to_guests,
|
||||
:set_business_headers
|
||||
|
|
Loading…
Reference in New Issue