【问题标题】:Devise and confirmation emails设计和确认电子邮件
【发布时间】:2016-07-27 09:29:32
【问题描述】:

我在我的 Rails 应用程序中使用 Devise,并正在发送电子邮件以进行电子邮件确认、密码重置和密码更改咨询。

  • 我想知道如何将不同的图像传递到每封电子邮件中,这样我就不需要将大量 HTML 传递给布局。理想情况下,如果可能的话,我想将图像传递给布局,也许我需要在控制器中执行此操作?

  • 如果用户只更新他们现有的电子邮件,我将如何发送不同的电子邮件?目前,devise 发送相同的确认邮件。

  • 最后,一旦他们最初确认了他们的帐户,我将如何发送欢迎电子邮件,而不是如果他们只是更新他们的电子邮件?

所有帮助将不胜感激,谢谢

【问题讨论】:

    标签: ruby-on-rails email devise devise-confirmable


    【解决方案1】:

    您可以覆盖设计邮件以满足您的要求。

    首先创建DeviseMailer

    # app/mailers/devise/mailer.eb
    if defined?(ActionMailer)
      class Devise::Mailer < Devise.parent_mailer.constantize
        include Devise::Mailers::Helpers
    
        def confirmation_instructions(record, token, opts = {})
          @token = token
          if record.pending_reconfirmation?
            devise_mail(record, :reconfirmation_instructions, opts)
          else
            devise_mail(record, :confirmation_instructions, opts)
          end
        end
    
        def reset_password_instructions(record, token, opts = {})
          @token = token
          devise_mail(record, :reset_password_instructions, opts)
        end
    
        def unlock_instructions(record, token, opts = {})
          @token = token
          devise_mail(record, :unlock_instructions, opts)
        end
      end
    end
    

    然后在app/views/devise/mailer/ 中为每个方法创建所需的视图:

    • reconfirmation_instructions,将在用户更改电子邮件时调用
    • confirmation_instructions,将在用户确认他们的电子邮件时调用
    • unlock_instructions,当帐户被锁定时
    • reset_instructions,密码重置

    其实你可以创建任何你喜欢的模板。

    希望这会有所帮助。

    【讨论】:

    • 看起来像我需要的,太棒了:D
    • 我怎样才能让它传入图像,以便我的布局可以使用通过 int 的图像?
    • 我还注意到更改密码的电子邮件不再有效?我尝试添加password_change,但它不起作用,有什么想法吗?
    • 您能解释一下您希望将图像传递到哪里吗?
    • 没关系,我解决了,我在@token 下添加了一个名为@emailimage 的变量。这使我可以将所需的图像发送到电子邮件布局中:D - 虽然仍然无法获取密码更新电子邮件
    猜你喜欢
    • 2011-08-22
    • 2012-03-10
    • 2013-07-11
    • 2019-08-04
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    相关资源
    最近更新 更多