0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】メールを送信する(ローカル)

Last updated at Posted at 2020-01-09

##基本

$ rails g mailer SampleMailer hoge

メーラーとViewファイル×2(HTML版とプレーンテキスト版)が生成されます。

app/mailers/sample_mailer.rb
class SampleMailer < ApplicationMailer
  def hoge
    @greeting = "Hi"

    mail to: "to@example.org"
  end
end
app/views/sample_mailer/hoge.html.erb
<h1>Sample#hoge</h1>

<p>
  <%= @greeting %>, find me in app/views/sample_mailer/hoge.html.erb
</p>
app/views/sample_mailer/hoge.text.erb
Sample#hoge

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

あとはControllerの任意の箇所でSampleMailer.hoge.deliver_nowと記述することで、ローカル環境でメールを送信することができます。

送信されるメールの内容は、サーバーのログから確認できます。

##よくあるカスタマイズ
メールの文面は、Viewファイルを修正することで自由に変更できます。
またMailerのアクションに引数をとって、引数からメールの送信先や本文に埋め込むテキストを抽出することが多いです。

app/mailers/sample_mailer.rb
class SampleMailer < ApplicationMailer
  def hoge(user)
    @user = user
    mail to: user.email, subject: 'Hello World!'
  end
end
app/views/sample_mailer/hoge.html.erb
<p>こんにちは<%= @user.name %>さん!</p>
app/views/sample_mailer/hoge.text.erb
こんにちは<%= @user.name %>さん!
app/controllers/user_controller.rb
class FooBarController < ApplicationController
  def foobar
    @user = find(params[:id)
    SampleMailer.hoge(@user).deliver_now
  end
end

##メールのプレビュー
冒頭の$ rails g mailer SampleMailer hogeを叩いた時に、以下のファイルが自動生成されます。

test/mailers/previews/sample_mailer_preview.rb
# Preview all emails at http://localhost:3000/rails/mailers/sample_mailer
class SampleMailerPreview < ActionMailer::Preview

  # Preview this email at http://localhost:3000/rails/mailers/sample_mailer/hoge
  def hoge
    SampleMailer.hoge
  end

end

コメントアウトに記載されているhttp://localhost:3000/rails/mailers/sample_mailer/hoge等のアドレスにアクセスすることで、メールのプレビューを確認することができます。

メーラーに引数が必要な場合には、プレビューファイル内で定義ましょう。

test/mailers/previews/sample_mailer_preview.rb
# Preview all emails at http://localhost:3000/rails/mailers/sample_mailer
class SampleMailerPreview < ActionMailer::Preview

  # Preview this email at http://localhost:3000/rails/mailers/sample_mailer/hoge
  def hoge
    user = User.first
    SampleMailer.hoge(user)
  end

end

##TODO
本番環境(特にHeroku)でのメール送信
https://railstutorial.jp/chapters/account_activation?version=5.1#sec-activation_email_in_production

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?