如何设置Devise电子邮件内容的条件



我想在我的Devise电子邮件中包含特定于环境的信息(例如,表示电子邮件何时来自预生产环境(。

我使用的是Ruby 3.1.1、Rails 7.0.2.4和Devise 4.8.1。我想根据环境变量对设计电子邮件中的内容进行条件化(例如,密码重置(。

config/locales/devise.en.yml:中

en:
devise:
mailer:
reset_password_instructions:
subject: "Reset password instructions"

在其他配置文件中,我可以做一些类似的事情

ymlKey: "<%= ENV['SOME_ENV_NAME'] %>"

但当我尝试在devise.en.yml:中这样做时

subject: "<%= ENV['SOME_ENV_NAME'] %>Reset password instructions"

CCD_ 3不被评估并且仅仅作为常规文本发送。

如何在设计电子邮件中使用ENV变量或其他条件逻辑?

除非您开发一个gem或使用类似的gem来实现这一点,因为这是一个.yml文件,并且必须以某种方式对其进行解析,以使字符串插值像ruby文件(.rb(一样工作

实现这一目标的另一种方法是执行以下操作:

devise.en.yml:中

subject: "%{some_env_name} Reset password instructions"

在发送电子邮件的行中,您可以这样做:

mail(to: user.email, subject: I18n.t('en.devise.mailer.reset_password_instructions.subject', :some_env_name => ENV['SOME_ENV_NAME']))

此外,在devise.en.yml:中应用上述内容(我还没有测试过,但它可能会起作用……删除双引号(之前,您可以尝试执行以下操作:

subject: <%= ENV['SOME_ENV_NAME'] %>Reset password instructions

相关内容

最新更新