为 Rails 中的每个环境设置邮件发件人地址

Set Mailer's From Address for Each Environment in Rails

我正在开发一个 rails 应用程序,该应用程序通过联系表(通过邮件程序)发送电子邮件。这一切都很好..在开发中。我目前已将其设置为从域 @dev.example.com) 发送,在生产中我希望该应用仅从 @example.com 发送。我在 config/environments 文件夹中添加了 config.action_mailer.smtp_settings 以及每个环境的所有 SMTP 信息。问题是当我在邮件程序中设置 default from: 地址时,我正在硬编码 @dev.example.com

有没有办法:

检查应用当前 运行 在哪个环境中并为每个环境定义一个电子邮件 address/domain?

从相应 config/environments/*.rb 文件中的 SMTP 设置获取当前环境的 :domain

欢迎所有其他想法。

谢谢

您可以执行以下操作:

# config/initializers/rails_additional_env.rb:
if defined?(Rails)
  case Rails.env
  when "production"
    RAILS_DOMAIN = "example.com"
  when "development"
    RAILS_DOMAIN = "dev.example.com"
  end
end

然后在您的邮件中

default from: "foo@#{RAILS_DOMAIN}"

这是开发环境的结果。