如何在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
相关产品推荐
相关产品推荐

