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

使用ActionMailer+Letter_Opener预览邮件时遇ActionView::MissingTemplate报错如何解决?

解决ActionMailer模板缺失及Letter_opener配置问题

一、先解决预览报错(MissingTemplate)

错误核心是缺少邮件对应的视图模板,Rails的ActionMailer调用mail方法时,会自动查找app/views/[mailer类名小写]/[方法名]路径下的模板文件。

步骤1:创建模板文件

  1. 在app/views目录下新建order_mailer文件夹(如果不存在)
  2. 在该文件夹中创建以下两个文件(至少要有一个,推荐同时支持HTML和纯文本):
    • new_order_email.html.erb(HTML格式邮件):
      <h1>感谢您的捐赠</h1>
      <p>您好,<%= @email %>,感谢您的支持!</p>
      
    • new_order_email.text.erb(纯文本格式邮件,适配不支持HTML的邮箱):
      感谢您的捐赠
      
      您好,<%= @email %>,感谢您的支持!
      

步骤2:检查模板关联

  • 确保模板文件名和OrderMailer中的方法名完全一致(包括大小写,Rails对文件名大小写敏感)
  • 如果需要自定义邮件布局,取消# layout "order_mailer"注释后,要确保app/views/layouts/order_mailer.html.erb存在;不需要的话保持注释即可使用默认布局。

二、配置Letter_opener gem

步骤1:添加并安装gem

在Gemfile的development组中添加:

group :development do
  gem 'letter_opener'
end

执行命令安装:

bundle install

步骤2:修改开发环境配置

打开config/environments/development.rb,添加或修改以下配置:

config.action_mailer.delivery_method = :letter_opener
config.action_mailer.perform_deliveries = true

步骤3:重启Rails服务器

修改配置后必须重启服务器,否则配置不生效。

测试验证

  1. 访问localhost:3000/rails/mailers/order_mailer/new_order_email,此时应该能正常预览邮件
  2. 在Rails控制台测试发送邮件:
    OrderMailer.new_order_email.deliver_now
    
    Letter_opener会自动打开浏览器展示发送的邮件内容。

常见排查点

  • 模板路径错误:确认模板在app/views/order_mailer下,而非app/views/mailers或其他路径
  • 文件名错误:确保后缀是.html.erb或.text.erb,而非.html或拼写错误
  • 服务器未重启:修改配置或添加文件后必须重启服务器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:15:38