Как отправить два разных электронных письма для разработки и подтверждения?

Оба устройства - подтверждающие (подтверждение по электронной почте, когда пользователь регистрируется) и повторно подтверждаемые (подтверждение по электронной почте, когда пользователь меняет электронную почту) - отправляют один и тот же шаблон электронной почты "translation_instructions". Как получить, чтобы другой шаблон электронной почты использовался для подтверждения?

3 ответа

Вы можете переопределить options[:template_name] в #confirmation_instructions метод вашего почтовика.

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

Также измените эту строку из device.rb

# config.mailer = 'Devise::Mailer'
config.mailer = 'AuthMailer'
#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

Просто посмотрите на документы и есть метод send_on_create_notification, который вы можете переопределить в модели. Так что просто нужно переопределить этот метод, чтобы электронное письмо с подтверждением не отправлялось, а отправлялось другое. В этом письме у меня будет ссылка для подтверждения.

Другие вопросы по тегам