HippoBlog
Web開発に関する備忘録や
日々の雑記ブログ
  • #Ruby on Rails
  • 2018年9月23日
ENTRY TITLE

Railsアプリケーションからメールを送信する

TEXT BY @hippohack@hippohack
TEXT BY @hippohack@hippohack
  • このエントリーをはてなブックマークに追加

ざっくりしたフロー

  • ユーザーへの招待メールを送信する際の実装例。
  • Action Mailerという標準機能で送信する。
  • mailerモデルを作成する。
  • 規約にそってviewファイル(メールテンプレ)を作成。
  • deliverメソッドで送信。

実装例

[app/mailers/invite_mail.rb]

class InviteMail < ActionMailer::Base
  # デフォルトでの送信元のアドレス
  default from: 'invite@hoge.com'

  def invite
    @invite = params[:invite]
    // raise
    @url  = 'http://hoge.com/fuga'
    mail(
      // to: (string | array)
      to: @invite.mail_to,
      subject: '招待メール',
    ) do |format|
      format.html
    end
  end
end

[app/controllers/invites_controller.rb]

def hoge
    @invite = Invite.new
    // do something
    if @invite.save
        InviteMail.with(invite: @invite).invite.deliver_later
    end
end

[views/invite_mail/invite.html.erb]

<!DOCTYPE html>
    <head>
        <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
    </head>
    <body>
        <h1><%= @invite.mail_to %> 様</h1>
        <p>招待メールが届いています。</p>
        # TODO: トークンとか
        <p><%= link_to '参加する', piyo_path %></p>
    </body>
</html>
  • textメールにも対応できるよう invite.text.erb も作成しておくのがセオリーみたい。

参考にさせていただいたサイト


最後までお読みいただき、ありがとうございました。

ご意見などありましたら@hippohackへDMをお願いいたします。

  • このエントリーをはてなブックマークに追加