You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QA环境中预览Rails电子邮件?

QA环境开启Rails邮件预览功能的方法

默认Rails仅在开发环境开启邮件预览功能,按以下步骤配置即可在QA环境使用该功能:

1. 修改QA环境配置

打开config/environments/qa.rb(如果你的测试环境配置文件名为staging等其他名称,替换为对应文件名即可),添加以下配置项:

# 开启邮件预览功能
config.action_mailer.show_previews = true
# 配置邮件预览文件路径,默认对应test/mailers/previews目录,无自定义路径可直接复用该配置
config.action_mailer.preview_path = "#{Rails.root}/test/mailers/previews"
# 可选:配置允许访问预览页面的IP白名单,避免未授权访问
config.action_mailer.preview_allowed_ips = %w[127.0.0.1 你的QA环境允许访问的IP段]

2. 配置路由

打开config/routes.rb,添加路由规则确保QA环境可以访问预览入口:

# 仅在开发和QA环境挂载邮件预览路由
if Rails.env.qa? || Rails.env.development?
  # 可自定义访问路径,默认常用/rails/mailers
  mount ActionMailer::Preview => '/rails/mailers'
end

如果需要给预览页面加上访问鉴权,避免公开泄露邮件内容,可以参考以下两种方案:

  • 基于Devise的权限校验示例:
authenticate :user, ->(user) { user.is_admin? } do
  mount ActionMailer::Preview => '/rails/mailers'
end
  • 基于HTTP Basic Auth的校验示例:
mail_preview_constraint = lambda do |request|
  next true if Rails.env.development?
  auth_username = ENV['MAIL_PREVIEW_USER']
  auth_password = ENV['MAIL_PREVIEW_PASSWORD']
  return false if auth_username.blank? || auth_password.blank?
  Rack::Auth::Basic::Request.new(request.env).credentials == [auth_username, auth_password]
end

mount ActionMailer::Preview => '/rails/mailers', constraints: mail_preview_constraint

3. 生效配置

重启QA环境的Rails服务后,访问你的QA环境域名/rails/mailers即可查看所有邮件预览。

注意:禁止在生产环境开启该功能,避免用户隐私、业务敏感信息泄露。

内容的提问来源于stack exchange,提问作者iconoclast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:27:05