人生のヒント

私が経験したことが、誰かの人生のヒントになればと願い書きます。

Ruby On Railsでメール送信できるように設定する方法(Action Mailer)

スポンサーリンク

f:id:hinthint:20160829184854j:plain

今回の記事では、Ruby On Railsでメール送信をできるようにするところまで書きます。

参考にしたURLです。

http://morizyun.github.io/blog/action-mailer-rails-mail/

 

メールサーバの環境ですが、DomainKing を利用しました。

Gmailを使っている記事が多いですが、こういった共用サーバ環境でも使えるので紹介したいと思います。私が使っているのが毎月108円のプランです。

メールアドレスの設定方法については、割愛したいと思います。設定されていることを前提とします。

このメールサーバ環境の懸念点ですが、SSL証明書を自分のサーバ用に設定することが出来ないためオレオレ証明書と同じ状態になっているところです。

オレオレ証明書でメール送信するための設定も必要なので、注意が必要です。この手順では送信できるようになってます。

 

1.環境設定

サーバにrootでログインすることを前提として、下記コマンドを使っていきます。

# su - rails

$ cd work/foo/

$ vi config/environments/production.rb

 config/environments/production.rb ファイルの末尾「end」の1行上に下記を書き込みます。

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default_url_options = { :protocol => 'http(場合によってhttps)', host: 'ホスト名' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => 'メールサーバのアドレス',
    :port => 587,
    :domain => 'ドメイン名',
    :user_name => '送信元メールアドレス',
    :password => '送信元メールアドレスのパスワード',
    :authentication => :plain,
    :enable_starttls_auto => false
  }

 

2.ActionMailerクラスの編集

サーバにrootでログインすることを前提として、下記コマンドを使っていきます。

# su - rails

$ cd work/foo/

$ rails g mailer message hello

$ vi app/mailers/message.rb

app/mailers/message.rbファイルを下記のように記載します。

class Message < ActionMailer::Base
  # デフォルトでの送信元のアドレス
  default from: "送信元のアドレス"

  def hello(name)
    @name = name
    mail(
      to:      '送信先のアドレス',
      subject: 'Mail from Message',
    ) do |format|
      format.html
    end
  end
end

 下記コマンドを実行。

$ vi app/views/message/hello.html.erb

app/views/message/hello.html.erb ファイルに記載します。

<%= "There is #{@name}'s body." %>

 

反映させます。

$ /etc/init.d/unicorn restart

 

3.動作確認

以下コマンドでメール送信します。

$ rails c

irb(main):001:0> Message.hello('test').deliver

 「Mail from Message」というタイトルで、「There is test's body. 」という文面のメールが送信先メールアドレスに届いたら動作確認OKです。

 

不要であれば、下記コマンドでテストで作ったActionMailerクラスを消せます。

 $ rails d mailer message hello