1. 送信元メールアドレス(gmail)の google アカウントの2段階認証を完了させる。
google アカウントの Security 設定で、2段階認証を設定する。
2. 送信元メールアドレス(gmail)の google アカウントでアプリパスワードを作成する。
google アカウントの App Password 設定で、アプリパスワードを設定すると、16個のアルファベット文字列を取得できる。これがアプリパスワード。
3. Rails 側の設定
1️⃣ 以下のコマンドを入力
rails g mailer UserMailer
すると、以下のようにディレクトリが作成されます。
create app/mailers/user_mailer.rb
create app/mailers/application_mailer.rb
invoke erb
create app/views/user_mailer
invoke rspec
create spec/mailers/user_mailer_spec.rb
create spec/mailers/previews/user_mailer_preview.rb
2️⃣ ApplicationMailer
の作成
自動生成されたファイル内に以下を記載する。
app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
default from: 'from@example.com' # 先ほどアプリパスワードを作成した gmail
layout 'mailer'
end
3️⃣ UserMailer
の作成
自動生成されたファイル内に以下を記載する。
app/mailers/user_mailer.rb
class UserMailer < ApplicationMailer
def welcome_email(user:) # 引数は送信先ユーザー
@user = user
mail(to: @user.email, subject: 'メールの件名')
end
end
4️⃣ メール本文の作成
先ほど作成した UserMailer
のメソッドに対応させて、 app/views/user_mailer
配下にファイルを作成する。
※ 件名は UserMailer
で設定する。
app/views/user_mailer/verify_email.text.erb
<%= @user.display_name %> 様
お世話になっております。
hogehoge
5️⃣ 環境ごとの設定
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3333 }
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
port: 587,
address: 'smtp.gmail.com',
domain: 'gmail.com',
user_name: "送信元googleアドレス",
password: "設定したアプリパスワード",
authentication: 'login',
enable_starttls_auto: true
}
以上の設定により、送信されるはずです!!
user = User.find(1)
UserMailer.with(user: user).welcome_email(user: user).deliver_now