前提・実現したいこと
deviseのregistrationsコントローラをオーバーライドし、sign_upした後にActionMailerを使用してメールを送信したいです。(ThanksMailerを作成)
発生している問題・エラーメッセージ
sign_upはできているのですが、肝心なメールが送付できていません。
(メールの送付可否はletter_openerで確認済です。ターミナルは正常な挙動をしております。)
大変申し訳ございませんが、どなたかお力添えを頂ければと思います。
該当のソースコード
config/routes.rb Rails.application.routes.draw do devise_for :users, controllers: { registrations: "users/registrations" } root :to =>"homes#top" get "home/about"=>"homes#about" resources :books, only: [:index,:show,:edit,:create,:destroy,:update] if Rails.env.development? mount LetterOpenerWeb::Engine, at: "/letter_opener" end end
app/controllers/users/registrations_controller.rb class Users::RegistrationsController < Devise::RegistrationsController def create super do resource.update(confirmed_at: Time .now.utc) end end end
app/mailers/thanks_mailer.rb class ThanksMailer < ApplicationMailer attr_accessor :email, :title, :name def thanks_mail(email,title,name) @email = email @title = title @name = name mail to: @email, subject: "[テストメール#{@title}]" end end
app/views/mailer/application_mailer.erb class ApplicationMailer < ActionMailer::Base default from: 'no-replay@gmail.com' layout 'mailer' def complete_mail(user) @user = user @url = "http://localhost:3000/users/#{@user.id}" mail(subject: "COMPLETE join your address" ,to: @user.email) end end
app/views/mailers/thanks_mailer.erb class ThanksMailer < ApplicationMailer attr_accessor :email, :title, :name def thanks_mail(email,title,name) @email = email @title = title @name = name mail to: @email, subject: "[テストメール#{@title}]" end end
app/views/thanks_mailer/thanks_email.erb <p><%= @name %>さん</p> <p>登録が完了しました</p>
views/devise/mailer/confirmation_instructions.html <p>Welcome <%= @email %>!</p> <p>You can confirm your account email through the link below:</p> <p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>
config/environments/development.rb config.file_watcher = ActiveSupport::EventedFileUpdateChecker config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { address: 'smtp.gmail.com', domain: 'gmail.com', port: 587, user_name: 'xxxxxxx@gmail.com', password: 'xxxxxxxxxxx', authentication: 'plain', enable_starttls_auto: true } ActionMailer::Base.delivery_method = :letter_opener_web end
試したこと
development.rbのuser_name,passwordに環境変数を記入しましたが、上手くいきませんでした。
補足情報(FW/ツールのバージョンなど)
Rails5.2.4
logはどうなってますか?
あなたの回答
tips
プレビュー