0
0

More than 1 year has passed since last update.

railsチュートリアル第11章 アカウント有効化のメール送信

Posted at

アカウント有効化のメール送信

アカウント有効化メールの送信に必要なコードを追加
このメソッドではAction Mailerライブラリを使ってUserのメイラーを追加
 Usersコントローラのcreateアクションで有効化リンクをメール送信するために使います。
このテンプレートの中に有効化トークンとメールアドレスのリンクを含め、使っていきます。

送信メールのテンプレート

メイラーの生成

ubuntu:~/environment/sample_app (account-activation) $ rails generate mailer UserMailer account_activation password_reset
Running via Spring preloader in process 11611
      create  app/mailers/user_mailer.rb
      invoke  erb
      create    app/views/user_mailer
      create    app/views/user_mailer/account_activation.text.erb
      create    app/views/user_mailer/account_activation.html.erb
      create    app/views/user_mailer/password_reset.text.erb
      create    app/views/user_mailer/password_reset.html.erb
      invoke  test_unit
      create    test/mailers/user_mailer_test.rb
      create    test/mailers/previews/user_mailer_preview.rb

account_activationメソッド、password_resetメソッドが生成されました

アカウント有効化メイラーのテキストビュー

app/views/user_mailer/account_activation.text.erb

User#account_activation

<%= @greeting %>, find me in app/views/user_mailer/account_activation.text.erb

アカウント有効化メイラーのHTMLビュー

app/views/user_mailer/account_activation.html.erb

<h1>User#account_activation</h1>

<p>
  <%= @greeting %>, find me in app/views/user_mailer/account_activation.html.erb
</p>

Applicationメイラー

app/mailers/application_mailer.rb

class ApplicationMailer < ActionMailer::Base
  default from: "noreply@example.com"
  layout 'mailer'
end

生成されたUserメイラー

app/mailers/user_mailer.rb

class UserMailer < ApplicationMailer

  def account_activation(user)
    @user = user
    mail to: user.email, subject: "Account activation"
    # mailにsubjectキーを引数として渡しています。
    # この値は、メールの件名にあたります
  end

  def password_reset
    @greeting = "Hi"

    mail to: "to@example.org"
  end
end

アカウント有効化のテキストビュー

app/views/user_mailer/account_activation.text.erb

Hi <%= @user.name %>,

Welcome to the Sample App! Click on the link below to activate your account:

<%= edit_account_activation_url(@user.activation_token, email: @user.email) %>

アカウント有効化のHTMLビュー

app/views/user_mailer/account_activation.html.erb

<h1>Sample App</h1>

<p>Hi <%= @user.name %>,</p>

<p>
Welcome to the Sample App! Click on the link below to activate your account:
</p>

<%= link_to "Activate", edit_account_activation_url(@user.activation_token,
                                                    email: @user.email) %>

演習

1.
コンソールを開き、CGIモジュールのescapeメソッド(リスト 11.15)でメールアドレスの文字列をエスケープできることを確認してみましょう。このメソッドで"Don't panic!"をエスケープすると、どんな結果になりますか?

>> CGI.escape('foo@example.com')
=> "foo%40example.com"
>> CGI.escape("Don'tpanic!")
=> "Don%27tpanic%21"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0