How to send two different emails for devise confirmable and devise reconfirmable?

…衆ロ難τιáo~ 提交于 2021-02-19 01:34:53

问题


Both devise confirmable (email confirmation when user signs up) and reconfirmable (email confirmation when user changes email) modules send the same email template, "confirmation_instructions". How do I get it so that a different email template is used for confirmable?


回答1:


You can override options[:template_name] in the #confirmation_instructions method of your mailer.

class AuthMailer < Devise::Mailer
  helper :application
  include Devise::Controllers::UrlHelpers
  default template_path: 'devise/mailer'

  def confirmation_instructions(record, token, options={})
    # Use different e-mail templates for signup e-mail confirmation and for when a user changes e-mail address.
    if record.pending_reconfirmation?
      options[:template_name] = 'reconfirmation_instructions'
    else
      options[:template_name] = 'confirmation_instructions'
    end

    super
  end
end

Also change this line from device.rb

# config.mailer = 'Devise::Mailer'
config.mailer = 'AuthMailer'



回答2:


#Devise Mailer

def confirmation_instructions(record)
  @resource = record
    if @resource.pending_reconfirmation?
      mail(to: @resource.unconfirmed_email, subject: "Confirm new email") do |format|
        format.html { render ... }
      end
    else
      mail(to: @resource.email, subject: "Confirm new account") do |format|
        format.html { render .... }
      end
    end
end



回答3:


Just looked at the docs and there's a send_on_create_notification method that you can override in the model. So just need to override this method so that the confirmation email is not sent and a different one is sent instead. In that email, I'll just have the confirmation link.



来源:https://stackoverflow.com/questions/15770070/how-to-send-two-different-emails-for-devise-confirmable-and-devise-reconfirmable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!