如何使用rails在浏览器中查看电子邮件视图

时间:2012-02-15 21:06:08

标签: ruby-on-rails actionmailer

我正在处理我的rails应用程序的电子邮件。现在,我知道查看电子邮件的唯一方法就是将其发送给自己。如何在“views”文件夹下的“notifications”文件夹中获取“daily_summary.html.haml”,以便在浏览器中呈现?我在想我应该添加路线:

match 'notifications' => 'notifications/daily_summary'

但后来我不知道如何处理控制器/动作方面的问题。

4 个答案:

答案 0 :(得分:10)

自Rails 4.1起,电子邮件预览就是原生的。 您需要做的就是在此目录中创建一个类:

test/mailers/previews/

该课程必须延长ActionMailer::Preview

class WeeklyReportPreview < ActionMailer::Preview
    def weekly_report
        WeeklyReport.weekly_report(User.first)
    end
end

编写返回Mail::Message个对象的方法。可以使用以下URL在开发环境中访问它们:

http://localhost:3000/rails/mailers/[preview_class_name]/[method_name]

就我而言:

http://localhost:3000/rails/mailers/weekly_report/weekly_report

可以在ActionMailer API documentation

中找到更多信息

答案 1 :(得分:8)

有一个名为Letter Opener的宝石,听起来就像你正在寻找的那样。它会在浏览器中预览电子邮件,而不是发送它们。我自己没有用过它。如果它有效,我很乐意听到它!

https://github.com/ryanb/letter_opener

还有一个名为Mail Viewer但在相当长一段时间内尚未积极开发。可能更好地指出明确:

https://github.com/37signals/mail_view

答案 2 :(得分:1)

我会看一下actionmailer_extensions。它使ActionMailer将外发电子邮件作为.eml文件写入磁盘。这可能足以满足您的需要(只需设置一个脚本来查看新文件的输出目录并在您首选的电子邮件客户端中打开它们),或者您可以分叉gem并直接修改它(它的源代码很简单)来编写.html文件,然后在浏览器中打开它们。

希望有所帮助!

答案 3 :(得分:1)

对于Rails 3,现在有一个gem mail_view,它包含在Rails 4.1中。这是set-up的链接。这很容易。

1。)添加到Gemfile:

gem 'mail_view', :git => https://github.com/basecamp/mail_view.git'
# or
gem "mail_view", "~> 2.0.4"

2。)在routes.rb中:

 # config/routes.rb
 if Rails.env.development?
    mount MailPreview => 'mail_view'
 end

3.。)创建一个MailPreview模型:

 # app/mailers/mail_preview.rb or lib/mail_preview.rb
class MailPreview < MailView
...
 def forgot_password
   user = Struct.new(:email, :name).new('name@example.com', 'Jill Smith')
   mail = UserMailer.forgot_password(user)
 end
end

在这个模型中,您可以根据需要命名方法,但它们与UserMailer方法相对应是有道理的。

4.。)要查看转到/mail_view以获取MailPreview中所有方法的列表。单击其中一个以在浏览器中查看HTML预览。