首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Rails中预览电子邮件?

如何在Rails中预览电子邮件?
EN

Stack Overflow用户
提问于 2011-08-24 01:25:05
回答 13查看 60.8K关注 0票数 122

这可能是一个愚蠢的问题,但是当我在Rails中组合一个HTML电子邮件时,有没有一种特别容易的内置方法来在浏览器中预览它的模板,或者我需要编写某种自定义控制器来将它作为它的视图?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2013-12-18 08:47:05

Action Mailer现在有一个内置的previewing emails in 方式。例如,查看以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
# located in test/mailers/previews/notifier_mailer_preview.rb

class NotifierPreview < ActionMailer::Preview
  # Accessible from http://localhost:3000/rails/mailers/notifier/welcome
  def welcome
    Notifier.welcome(User.first)
  end
end
票数 146
EN

Stack Overflow用户

发布于 2011-08-24 02:54:18

丹尼尔的answer是一个很好的开始,但是如果你的电子邮件模板包含任何动态数据,它就不会工作。例如,假设您的电子邮件是一个订单收据,并且在其中打印出@order.total_price -使用前面的方法,@order变量将为空。

下面是我使用的一个小食谱:

首先,由于此电子邮件预览功能肯定仅供内部使用,因此我在admin名称空间中设置了一些通用路由:

代码语言:javascript
代码运行次数:0
运行
复制
#routes.rb

MySite::Application.routes.draw do
  namespace :admin do
    match 'mailer(/:action(/:id(.:format)))' => 'mailer#:action'
  end
end

接下来,我创建控制器。在这个控制器中,我为每个电子邮件模板创建一个方法。由于大多数电子邮件包含动态数据,因此我们需要填充模板所需的任何成员变量。

这可以用fixture来完成,但我通常更喜欢抓取一些伪随机的真实数据。记住--这不是单元测试--这纯粹是一个开发辅助工具。它不需要每次都产生相同的结果--事实上--如果不是这样可能会更好!

代码语言:javascript
代码运行次数:0
运行
复制
#app/controllers/admin/mailer_controller.rb
class Admin::MailerController < Admin::ApplicationController

  def preview_welcome()
    @user = User.last
    render :file => 'mailer/welcome.html.erb', :layout => 'mailer'
  end

end

请注意,当我们呈现模板时,我们使用layout=>:mailer。这会将电子邮件的正文嵌入到您创建的HTML电子邮件布局中,而不是典型的web应用布局(例如application.html.erb)中。

差不多就是这样了。现在,我可以访问http://example.com/admin/mailer/preview_welcome预览对我的欢迎电子邮件模板的更改。

票数 74
EN

Stack Overflow用户

发布于 2012-04-28 04:09:05

37Signals也有自己的邮件测试工具,叫做mail_view。这真是太棒了。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7165064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档